Anarki needs to be updated to arc3. I hope I am not too presumptuous when I say: Here's how I think we should do it. CatDancer's "Sharing arc hacks" (http://catdancer.github.com/sharing-hacks.html) is good way of dealing with hacks to arc (though not as great for libraries -- http://arclanguage.org/item?id=9766) and should be an organizing principle for the new anarki. In brief, a hack is represented by a git commit which incorporates only the minimum changes from the raw arc3.tar to accomplish it. These hacks are tagged as "${author}.${hackname}.${release}" (EDIT: this is not entirely accurate, see CatDancer's comment, below). This allows people to grab precisely the hacks they want by using git's merging machinery. Note that the tag name includes the author's name. This is a good idea for hacks which are clearly owned by and the responsibility of one person. However, for purposes of forward-porting hacks from anarki, I have used the name 'anarki' as a sort of synonym for the arc community. I suggest the use of this name in general for forward-porting hacks from anarki (unless you were the original author and wish to take ownership, of course), and in general if one wishes to give a hack up to communal management. Isolating hacks from each other to produce a minimal change from arc3.tar requires either working on hacks in isolation - starting from raw arc3, sans even minor utilities like arc.sh or the exit-on-eof fix - or learning how to use `git rebase` and `git cherry-pick`. If you have the time, I strongly recommend the latter approach. It has been covered in detail elsewhere, but I direct you in particular to http://blog.moertel.com/articles/2007/12/10/how-i-stopped-missing-darcs-and-started-loving-git (unfortunately the git tutorial aspect is a bit mixed up with darcs-git comparisons), and for good style in using git-rebase, to http://www.mail-archive.com/dri-devel@lists.sourceforge.net/msg39091.html. There will be four arc3-based branches in the new anarki: official, fixes, extras, and master. `official' tracks pg's releases of arc, as it does now. `fixes' contains only bugfixes to arc, such as the fix to make atomic-invoke work properly even with continuations. `extras' contains things which make living with arc easier, but which do not significantly alter the behavior of arc, like arc.sh and the exit-on-eof patch. In particular, any code that works in the extras branch should also work unaltered in the official branch (forward-compatibility), and of course vice-versa (backwards-compatibility). `master' should contain all code in fixes and extras as well as any enhancements people care to add, like anarki's old master branch. Anarki's old stable and master branches (as well as my more-or-less defunct hygiene branch) will be renamed to arc2.stable and arc2.master respectively, so that anyone who wants to use them doesn't have to go hunting through `git log` to grab them. Unless the community (that's you guys!) think the above is a bad idea or have better suggestions, I'll make the switchover sometime this week. Until then, the fixes, extras, and master branch are available in anarki and named arc3.fixes, arc3.extras, and arc3.master respectively; feel free to check them out and contribute+merge hack-tags into them. I'm still not sure what should be done regarding libraries. Uploading them to anarki in the lib/ directory was and is a simple way to share them, but various more featureful and distributed alternatives have been proposed - in particular CatDancer's "lib" library (http://catdancer.github.com/lib.html). Undoubtedly the community will work this out in time. For now, I suggest we focus on forward-porting things from the arc2-based anarki that are obviously bugfixes, extras, or language-additions. On that note, there is also an arc3.help branch in anarki, in which I am working on forward-porting and improving anarki's on-line help system. I'd be glad for any help here, but remember not to bring in any unnecessary dependencies - in particular, do NOT merge arc3.master into arc3.help; you should only ever merge arc3.help into arc3.master. Note that, unlike the original help system, the documentation of core arc files (arc.arc, strings.arc, etc) is done in a separate file, docs.arc, rather than documenting them inline with help strings (don't worry, functions can still be documented inline; this just makes merging with other hacks much less of a pain in the ass). The hack-tags which have been uploaded to anarki thus far, and some notes regarding them: In arc3.master: - anarki.help.0: A snapshot of the current (as of this writing) state of the arc3.help branch. - anarki.util.0: Adds the util.arc file. Instead of adding functions to arc.arc, I propose to put them here instead. This helps keep arc.arc as close as possible to pg's arc3.tar, which helps when trying to understand what anarki actually changes about arc as compared with what it adds. Before adding to this file, however, please consider whether your needs might not better be served by adding a library. If it's truly a new language feature or something that needs to be autoloaded to be useful - like the help system, which is the only thing currently occupying util.arc - then and only then should it go here. - anarki.load-file-stack.0: A change to arc.arc that makes 'load keep track of the current load file and the load file stack (as 'current-load-file* and 'load-file-stack* respectively). - rntz.$.0: The '$ special form (http://arclanguage.org/item?id=9748), which permits access to mzscheme with a method of escaping back to arc. - rntz.simplify-halve.0: A simplification of the implementation of 'halve in strings.arc. - Everything in arc3.extras and arc3.fixes. In arc3.extras: - anarki.arcsh.0: Adds arc.sh. - catdancer.exit-on-eof.1: The patch described at http://hacks.catdancer.ws/exit-on-eof.html. Makes arc exit on eof. I was unable to find this patch in CatDancer's arc repo, so I grabbed the patch itself, applied it, and made up a tag for it. - anarki.gitignore.0: Adds a .gitignore containing the sole line `arc/', to make git ignore the arc/ directory which is generated by the arc server. Authored by nex3. In arc3.fixes: - anarki.fix-atomic-invoke.0: Fixes 'atomic-invoke to work even in the presence of continuations, by using 'dynamic-wind instead of 'protect. |