Community-managed fork of the Arc dialect of Lisp; for commit privileges submit a pull request.
Arc Scheme Emacs Lisp Perl6 Perl Vim script Other
Latest commit 5460fad Jan 23, 2017 @akkartik akkartik write files atomically regardless of disk volume
To do this we always create temporary files on the same filesystem as
the final destination.

Hopefully this will fix the second bug reported in #59.



Anarki: a publicly modifiable 'wiki-like' fork of Arc Lisp (

The intention is to be extremely permissive in accepting patches. For commit privileges, just submit your first pull request or ask on


Warning: If you are already running a HN-like site, migrating to this fork might mess up your site's data. Come talk to us first, and be sure to make a backup before the migration.

To run, install Racket from, then:

$ git clone
$ cd anarki
$ ./  # interactive repl
arc> (quit)


Anarki has thorough automated tests. To run them, install mercurial, then:

# start in the anarki directory
$ hg clone
$ ./
arc> (load "tests.arc")

Anarki is explicitly not constrained to maintain compatibility with upstream releases, and compatibility status may swing wildly from commit to commit depending on who takes an interest. To see a list of what's different, type (incompatibilities) at the repl. If you make an incompatible change, please update this list.

If you run into trouble:;


Racket interop

Racket expressions can be evaluated with the $ function, e.g. ($ (print 'hello)) uses the print function in Racket.

Hacker News Site

anarki comes bundled with a Hacker News style app. To run the HN server, first pick your (the admin's) username:

$ mkdir www
$ echo __username__ > www/admins

(You can have multiple admins. Add them all to www/admins, separated by whitespace.)

Now bring up the server:

$ ./run-news

There'll be a pause while the server loads up, with some messages, then you'll see the 'arc> ' prompt.

Go to http://localhost:8080. Click on login, and create the account for your username. You should now be logged in as an admin.

Don't worry about "user break" or "error writing" messages.

To customize News, change the variables at the top of lib/news.arc. To change the port your server runs at, modify lib/run-news.arc.

Any interactive changes to the prompt will be reflected immediately in the server, without needing to restart it. Don't forget to add them to the .arc files as appropriate, otherwise they'll be lost when you stop the server or it dies for some reason.