{"id":13436172,"url":"https://github.com/arclanguage/anarki","last_synced_at":"2025-05-12T11:42:18.996Z","repository":{"id":386532,"uuid":"3935","full_name":"arclanguage/anarki","owner":"arclanguage","description":"Community-managed fork of the Arc dialect of Lisp; for commit privileges submit a pull request.","archived":false,"fork":false,"pushed_at":"2025-04-24T05:13:37.000Z","size":3517,"stargazers_count":1184,"open_issues_count":24,"forks_count":161,"subscribers_count":70,"default_branch":"master","last_synced_at":"2025-04-24T06:19:55.325Z","etag":null,"topics":["arc","darwin","linux","lisp","lisp-1","macos","racket-lang","webapp"],"latest_commit_sha":null,"homepage":"http://arclanguage.github.io","language":"Arc","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/arclanguage.png","metadata":{"files":{"readme":"README.markdown","changelog":"CHANGES/README","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2008-03-14T20:13:58.000Z","updated_at":"2025-04-24T05:05:13.000Z","dependencies_parsed_at":"2023-07-05T14:45:03.942Z","dependency_job_id":null,"html_url":"https://github.com/arclanguage/anarki","commit_stats":{"total_commits":1268,"total_committers":52,"mean_commits":"24.384615384615383","dds":0.555205047318612,"last_synced_commit":"6f3fecdaa46e25b34c22dd01d30b19bd60ef05e5"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arclanguage%2Fanarki","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arclanguage%2Fanarki/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arclanguage%2Fanarki/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/arclanguage%2Fanarki/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/arclanguage","download_url":"https://codeload.github.com/arclanguage/anarki/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253731827,"owners_count":21955156,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arc","darwin","linux","lisp","lisp-1","macos","racket-lang","webapp"],"created_at":"2024-07-31T03:00:45.030Z","updated_at":"2025-05-12T11:42:18.966Z","avatar_url":"https://github.com/arclanguage.png","language":"Arc","funding_links":[],"categories":["Arc"],"sub_categories":[],"readme":"# Anarki [![CI](https://github.com/arclanguage/anarki/actions/workflows/ci.yml/badge.svg)](https://github.com/arclanguage/anarki/actions/workflows/ci.yml)\n## A publicly modifiable 'wiki-like' fork of [Arc Lisp](http://www.paulgraham.com/arc.html)\n\nThe intention is to be *extremely permissive* in accepting patches. For commit\nprivileges, just submit your first pull request or ask on [**Arc Language Forum**](http://arclanguage.org/forum).\n\n## Getting started\n\n### Installation\n\nFirst [install **Racket** (v7.7 or later)](http://racket-lang.org), then in a terminal, run:\n\n    $ raco pkg install sha\n    $ git clone http://github.com/arclanguage/anarki\n    $ cd anarki\n    \nYou can start the interactive repl with:\n\n    $ ./arc.sh\n    \nOr start news (and the repl) with:\n\n    $ cd apps/news\n    $ ./run-news\n\n### Tutorial\n\nIf you're new to **Arc**, or **Lisp** in general, a good starting point is the [**Tutorial**](https://arclanguage.github.io/tut-anarki.html).\n\n\n### Documentation and help\n\nIf you run into trouble, check\n\n  * [**Arc Language Forum**](http://arclanguage.org/forum)\n  * [**Arc Language Wiki**](http://sites.google.com/site/arclanguagewiki)\n  * [**Arc Language Documentation**]( https://arclanguage.github.io/ref)\n  * **Arc's built-in help system** by typing `(help)` at the repl\n\n## News Site\n\n**Anarki** comes bundled with **News**, a [**Hacker News**](https://news.ycombinator.com) style app.\n \n\n### Admins\n\nTo run **News**, first pick your (the admin's) username,\n\n    $ cd anarki/apps/news\n    $ mkdir www\n    $ echo __username__ \u003e www/admins\n\nYou can have multiple admins. Add them all to `www/admins`, separated by whitespace.\n\n\n### Starting the server\n \n**Warning**: *If you are already running a **News** site, migrating to this fork\nmight mess up your site's data. Come [talk to us](http://arclanguage.org/forum)\nfirst, and be sure to make a backup before the migration.*\n\nNow bring up the server,\n\n    $ ./run-news\n\nThere'll be a pause while the server loads up, with some messages, then you'll\nsee the `arc\u003e` prompt.\n\nGo to [http://localhost:8080](http://localhost:8080). Click on **login**, and\ncreate the account for your username. You should now be logged in as an admin.\n\n(Don't worry about `user break` or `error writing` messages.)\n\n\n### Customization\n\nTo customize **News**, change the variables at the top of `apps/news/news.arc`. To change the port your server runs at, modify `apps/news/run-news.arc`.\n\nAny interactive changes to the prompt will be reflected immediately in the server, without needing to restart it. Hence if you make any changes to `apps/news/news.arc`, you can load them, by typing `(load \"apps/news/news.arc\")` in the repl. If you stop the server or it dies for some reason, previously entered commands are available in the command history (at least if you have **Readline** installed).\n\n\n### HTTPS\n\nYou may want to serve **News** securely over **HTTPS**. An example configuration for running **Nginx** with **SSL** as a reverse proxy for **News** can be found in `anarki/extras/news.nginx.conf`.\n\n### Resetting passwords\n\nFor password reset mails to be sent out, your must set up an email account to send these from,\n\n    $ echo \"someone@example.com\" \u003e www/app-email  ; email\n    $ echo \"smtp.example.com\" \u003e\u003e www/app-email     ; smtp server\n    $ echo \"someone@example.com\" \u003e\u003e www/app-email  ; user\n    $ echo \"1234\" \u003e\u003e www/app-email                 ; password\n\n## Development\n\n### Tests\n\n**Anarki** has thorough automated tests. \n\n    # start in the anarki directory\n    $ ./arc.sh\n    arc\u003e (load \"tests.arc\")\n\n**Anarki** is explicitly not constrained to maintain compatibility with upstream\nreleases, and compatibility status may swing wildly from commit to commit\ndepending on who takes an interest. To see a list of what's different, type\n`(incompatibilities)` at the repl. If you make an incompatible change, please\nupdate this list.\n\nAnybody is welcome to make changes to Anarki, but please make sure the tests\ncontinue to pass. Since we rely on the unit-test.arc test harness, please also\nrun its tests before committing any changes:\n\n  $ ./arc.sh\n  (require 'lib/unit-test.arc/unit-test.arc)\n  (load \"unit-test.arc/tests.arc\")\n  (test-and-error-on-failure)\n\n### Racket interop\n\n**Racket** expressions can be evaluated with the `($ ...)` syntax. For instance, `(($ crypto-random-bytes) 16)` obtains the `crypto-random-bytes` function from **Racket** and makes a call to it.\n\nIf you write lots of **Racket** code and you just want to use **Anarki** for part of a bigger project, you can `raco pkg install anarki` and use **Anarki** to write **Racket** modules:\n\n    #lang anarki\n    (:provide function-for-use-in-racket)\n    \n    (= racket-import ($.dynamic-require ...))\n    (load \"relative/path.arc\")\n    \n    (def utility-for-use-in-racket (x)\n      (* x (racket-import x))\n\n#### Scope\nNote that **Anarki** does not have private module scopes; the `(:provide ...)` section is just there to make it easy to `require` an **Anarki**-based library from **Racket**.\n\n#### Keyword arguments\n**Anarki** has some issues passing *keyword arguments* to **Racket** functions, but **Racket**'s `keyword-apply` can be used for that.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farclanguage%2Fanarki","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farclanguage%2Fanarki","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farclanguage%2Fanarki/lists"}