{"id":13782866,"url":"https://github.com/mushrom/nscheme","last_synced_at":"2026-01-17T23:41:02.585Z","repository":{"id":146178282,"uuid":"63664766","full_name":"mushrom/nscheme","owner":"mushrom","description":"High-performance scheme interpreter","archived":false,"fork":false,"pushed_at":"2023-06-19T00:55:11.000Z","size":130,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-08-03T18:16:56.500Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","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/mushrom.png","metadata":{"files":{"readme":"README.md","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}},"created_at":"2016-07-19T05:51:35.000Z","updated_at":"2022-03-12T01:17:42.000Z","dependencies_parsed_at":"2024-01-07T23:08:06.775Z","dependency_job_id":"f48049b9-e809-4236-85ec-7130fde2d2e6","html_url":"https://github.com/mushrom/nscheme","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mushrom%2Fnscheme","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mushrom%2Fnscheme/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mushrom%2Fnscheme/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mushrom%2Fnscheme/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mushrom","download_url":"https://codeload.github.com/mushrom/nscheme/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253595990,"owners_count":21933489,"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":[],"created_at":"2024-08-03T18:01:46.611Z","updated_at":"2026-01-17T23:41:02.546Z","avatar_url":"https://github.com/mushrom.png","language":"C","funding_links":[],"categories":["C"],"sub_categories":[],"readme":"nscheme readme\n==============\n\nA fast, stack-based, JIT-compiling, concurrency-friendly scheme interpreter.\nCurrently a work in progress, it doesn't do much yet.\n\nTo build, type `make`, and that's it for now. A ./configure script and testing\nframework will be coming soon.\n\n## TODO\n- [ ] parser\n    - [x] basic lexer+parser\n    - [x] global symbol table\n        - [ ] add locking once multithreading is implemented\n    - [x] handle basic types (ints, characters, null, ...)\n    - [ ] handle unicode\n        - [ ] generic utf* handling or just utf8?\n    - [x] handle quoted forms\n    - [x] handle dotted form pairs, (a . b)\n    - [ ] handle vectors\n    - [ ] handle strings\n    - [ ] handle bytevectors\n\t- [ ] properly handle parser errors\n- [ ] I/O\n    - [/] `write` primitives\n\t    - [x] `display`\n\t\t- [ ] `write`\n    - [x] `read` primitive \n    - [ ] implement port handles\n        - [ ] implement a generic port structure to handle I/O for many different\n              sources eg. sockets, files, memory buffers\n        - [ ] handle port argument for I/O primitives display, write, read, ...\n        - [ ] Implement open/close procedures for different sources\n- [ ] virtual machine\n    - [x] basic stack-based structure for vm\n    - [ ] tree walker interpreter\n        - [x] some basic forms (lambda, if, define, top-level begin)\n        - [ ] expression-like begin\n        - [ ] tail recursion (note: may not be needed if all lambdas are JIT'd on first call)\n        - [ ] ! syntax expansion\n    - [ ] JIT compiler\n        - [x] Tail recursion\n        - [ ] Scope analysis pass\n            - [ ] handle local (define ...) forms\n                - [x] single local variable definitions\n                - [ ] function definition form\n            - [ ] handle expression-like begin forms that generate new scope\n        - [ ] ! handle nested lambdas\n        - [ ] ! syntax expansion\n        - [ ] optimizations\n            - [ ] common subexpression elimination\n            - [ ] dead code elimination\n            - [ ] optimizing code which is guaranteed to have no side effects\n            - [ ] inline small functions\n                - will be especially useful for syntax extensions\n                  which generate lambdas, eg. named lets)\n    - [ ] garbage collection\n        - [ ] ! implement basic pointer bumping allocation\n        - [ ] ! implement mark-and-compact collector\n        - [ ] figure out a way to make it work with multiple threads (arenas?)\n    - [ ] exception handling\n        - [ ] implement exception stack in vm struct\n        - [ ] add `with-exception-handler` and `error` primitives\n    - [ ] module system\n        - [ ] figure out what to put here\n        - [ ] implement r7rs libraries and associated procedures\n    - [ ] FFI\n        - [ ] maybe look at how python does it, or lua or chicken or something\n- [ ] command line interface\n    - [x] add help output\n    - [x] add file argument\n    - [ ] allow specifying options like environment, modules, output location as arguments\n- [ ] testing\n    - [ ] I/O tests\n        - [ ] for basic std{in,out}\n        - [ ] for network sockets\n        - [ ] for memory buffers\n    - [ ] stress testing for compiler\n    - [ ] unit tests for scheme procedures\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmushrom%2Fnscheme","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmushrom%2Fnscheme","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmushrom%2Fnscheme/lists"}