{"id":13941135,"url":"https://github.com/mflatt/not-a-box","last_synced_at":"2026-01-31T19:02:16.369Z","repository":{"id":148680375,"uuid":"82072935","full_name":"mflatt/not-a-box","owner":"mflatt","description":null,"archived":false,"fork":false,"pushed_at":"2017-05-05T22:56:13.000Z","size":2580,"stargazers_count":58,"open_issues_count":1,"forks_count":5,"subscribers_count":13,"default_branch":"master","last_synced_at":"2025-06-11T04:47:35.601Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Racket","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mflatt.png","metadata":{"files":{"readme":"README.txt","changelog":null,"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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-02-15T15:04:21.000Z","updated_at":"2025-04-19T19:43:10.000Z","dependencies_parsed_at":"2023-05-28T15:45:17.721Z","dependency_job_id":null,"html_url":"https://github.com/mflatt/not-a-box","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mflatt/not-a-box","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mflatt%2Fnot-a-box","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mflatt%2Fnot-a-box/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mflatt%2Fnot-a-box/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mflatt%2Fnot-a-box/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mflatt","download_url":"https://codeload.github.com/mflatt/not-a-box/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mflatt%2Fnot-a-box/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28950279,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-31T18:30:42.805Z","status":"ssl_error","status_checked_at":"2026-01-31T18:30:19.593Z","response_time":128,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2024-08-08T02:01:12.014Z","updated_at":"2026-01-31T19:02:16.353Z","avatar_url":"https://github.com/mflatt.png","language":"Racket","funding_links":[],"categories":["Racket"],"sub_categories":[],"readme":"Moved to\n\n   https://github.com/racket/racket7\n\n----------------------------------------\n\nWork-in-progress for running Racket on Chez Scheme.\n\n [Requires the current development version of Chez Scheme\n  from https://github.com/cisco/ChezScheme]\n\nThe files:\n\n *.sls - Chez Scheme libraries that provide implementations of Racket\n         primitives, building up to the Racket expander. The\n         \"core.sls\" library is implemented directly in Chez. For most\n         other cases, a corresponding \"linklet/*.scm\" file contains\n         the implementation extracted from from expanded and flattened\n         Racket code.\n\n core/*.ss - Part of \"core.sls\" (via `include`) to implement core data\n         structures (especially immutable hash tables), structs, etc.\n\n *.scm - a temporary compatibility layer to be `include`d into an\n         \".sls\" library.\n\n linklet/*.scm - A conversion from a \".rktl\" file to be `included`d\n         into an \".sls\" library.\n\n linklet/*.rktl - A Racket library (e.g., to implement regexps) that\n         has been fully macro expanded and flattened into a linklet. A\n         linklet's only free variables are \"primitives\" that will be\n         implemented by various \".sls\" libraries in layers. See\n         \"Builing linklets from source\" below for more information.\n\n primitive/*.scm - for \"expander.sls\", tables of bindings for\n         primitive linklet instances.\n\n convert.rkt - A linklet-to-library-body compiler, which is used to\n         convert a \".rktl\" file to a \".scm\" file to inclusion in an\n         \".sls\" library.\n\n demo/*.ss - Chez scripts to check that a library basically works. For\n         example \"demo/regexp.ss\" runs the regexp matcher on a few\n         examples. To run \"demo/*.ss\", use `make *-demo`.\n\n schemify/schemify.rkt - Source to \"schemify.scm\", which is part of\n         the implementation of linklets --- specifically, for\n         compiling a Racket linklet to a Chez procedure.\n\n other *.rkt - Racket scripts like \"convert.rkt\" or comparisions like\n         \"demo/regexp.rkt\". For example, you can run \"demo/regexp.rkt\"\n         and compare the reported timing to \"demo/regexp.ss\".\n\n\nBuilding linklets from source:\n\n Most \".rktl\" sources are the the \"linklet\" branch of the Racket repo\n that's currently at\n\n            https://github.com/mflatt/racket\n\n For example, \"linklet/regexp.rktl\" is generated from `make\n regexp-src` in the \"pkgs/regexp\". The \"linklet/schemify.rktl\" linklet\n is generated from \"schemify/schemify.rkt\" here, though.\n\n To rebuild those sources, set the `LINKLET_RACKET` environment\n variable to a built git clone of the \"linklet\" branch (it's probably\n enough to make with `PKGS=\"compiler-lib\"`), and then use `make\n all-linklets`.\n\n\nRunning \"demo/expander.ss\":\n\n A `make expander-demo` builds and tries the expander on simple\n examples. If `LINKLET_RACKET` is set as for building linklets, the\n \"expander-demo.ss\" also tries loading `racket/base` from source.\n\n\nDumping linklets and schemified linklets:\n\n Set the `PLT_LINKLET_SHOW` environment variable to pretty print each\n linklet generated by the expander and its schemified form that is\n passed on the Chez.\n\n\nStatus and thoughts on various Racket subsystems:\n\n * \"core-struct.ss\" is half an implementation of Racket structures,\n   with structure-type properties, applicable structs,\n   `gen:equal+hash`, and so on in terms of Chez records. Applicable\n   structs work by adding an indirection to each function call (in a\n   little compiler from fully-expanded code to Chez) when the target\n   is not obviously a plain procedure; with the analysis in\n   \"schemify/schemify.rkt\", the indirection is not needed often in a\n   typical program, and the overhead appears to be light when it is\n   needed. The rest of the implementation of Racket structures looks\n   straightforward.\n\n * Racket's delimited continuations, continuation marks, threads, and\n   events are mostly in place (see \"core-control.ss\",\n   \"core-engine.ss\", and the source for \"thread.rktl\"), but to\n   integrate I/O, the scheduler needs access to the OS's\n   select()/epoll()/kqueue()/WaitMultipleEvents().\n\n * The Racket FFI looks a lot like the Chez FFI, so I expect that to\n   mostly work, although there may be allocation issues.\n\n * The Racket and Chez numeric systems likely differ in some ways, and\n   I don't know how much work that will be.\n\n * For futures, Chez exposes OS-level threads with limited safety\n   guarantees. An implementation of futures can probably take\n   advantage of threads with thread-unsafe primitives wrapped to\n   divert to a barrier when called in a future.\n\n * Ephemerons require support from Chez. (Pull request submitted.)\n\n * GC-based memory accounting similarly seems to require new support,\n   but that can wait a while.\n\n * Extflonums will probably exist only on the Racket VM for a long\n   while.\n\n * Bytecode, as it currently exists, goes away. Platform-independent\n   \".zo\" files might contain fully expanded source (possibly also run\n   through Chez's source-to-source optimizer), and maybe `raco setup`\n   will gain a new step in creating platform-specific compiled code.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmflatt%2Fnot-a-box","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmflatt%2Fnot-a-box","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmflatt%2Fnot-a-box/lists"}