{"id":15316406,"url":"https://github.com/joebobmiles/pilotscheme","last_synced_at":"2025-12-13T23:30:14.893Z","repository":{"id":125526823,"uuid":"280284054","full_name":"joebobmiles/PilotScheme","owner":"joebobmiles","description":"A embeddable, single-header, no-nonsense Scheme.","archived":false,"fork":false,"pushed_at":"2020-09-30T23:11:46.000Z","size":56,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-12-29T08:41:34.292Z","etag":null,"topics":["compiler","embeddable","interpreter","scheme","single-header"],"latest_commit_sha":null,"homepage":"","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/joebobmiles.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,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-07-16T23:59:59.000Z","updated_at":"2024-05-11T12:43:39.000Z","dependencies_parsed_at":null,"dependency_job_id":"67130281-0702-43ea-a98f-ef61717c64a6","html_url":"https://github.com/joebobmiles/PilotScheme","commit_stats":{"total_commits":79,"total_committers":2,"mean_commits":39.5,"dds":0.3417721518987342,"last_synced_commit":"82c96d4b6edda0bb18eedbcc891ffe841128e184"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joebobmiles%2FPilotScheme","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joebobmiles%2FPilotScheme/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joebobmiles%2FPilotScheme/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joebobmiles%2FPilotScheme/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/joebobmiles","download_url":"https://codeload.github.com/joebobmiles/PilotScheme/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239680982,"owners_count":19679509,"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":["compiler","embeddable","interpreter","scheme","single-header"],"created_at":"2024-10-01T08:54:02.222Z","updated_at":"2025-12-13T23:30:14.836Z","avatar_url":"https://github.com/joebobmiles.png","language":"C","readme":"# 🛫Pilot Scheme\n\nPilot Scheme is a project that seeks to merge the brilliant but cumbersome\n[Racket](https://github.com/racket/racket) (formerly PLT Scheme) and the wicked-\nfast [femtolisp](https://github.com/JeffBezanson/femtolisp) -- and wrap it all\ninto a highly portable, single-header C library!\n\n\u003e This project is still _heavily_ under development!\n\n## Goals\n\n- [ ] Quickest Scheme implementation (compiled _and_ interpreted).\n    - [ ] Fast execution times.\n    - [ ] Fast compile times.\n- [ ] Racket-style macros-making-macros.\n- [ ] Compiles to:\n    - [ ] C-compatible native code.\n    - [ ] Web Assembly.\n    - [ ] SPIR-V.\n- [ ] C/C++ interop via Foreign Function Interfaces.\n    - [ ] 🦄 Julia-like direct calling into C, C++, and Fortran code.\n- [ ] Fully embeddable compiler and interpreter.\n- [ ] Build automation and package management are handled through Pilot Scheme.\n- [ ] Compile-time code execution. (Think Jai's `#run` directive.)\n- [ ] Compile-time memory management. (No garbage collector!)\n- [ ] Self-hosting.\n- [ ] Hot module reloading.\n\n## Non-goals\n\n- [ ] Simple implementation.\n- [ ] Become the best-est programming language in all the land.\n- [ ] Solve all of software development's big problems.\n\n## Getting Started\n\n### Embedding 🛫Pilot Scheme\n\nSimply include the header `pilot.h` into your project, where ever you like to\nkeep your headers. Here's an example of how to use Pilot Scheme:\n\n\u003e Presently only the streaming lexer has been implemented, this example\n\u003e illustrates its use.\n\n```c\n#include \"pilot.h\"\n\n// ...\n\n// Allocate a memory pool of 1024B.\nsize_t memory_pool_size = 1024;\nchar*  memory_pool = malloc(memory_pool_size);\nmemset(memory_pool, 0, memory_pool_size);\n\n// Initialize Pilot Scheme with the allocated memory pool.\nplt_init(memory_pool, memory_pool_size);\n\n// Zero initialize lexer.\nplt_lexer lexer = { 0 };\n\nplt_token t;\ndo {\n    // Grab the next token from the source code.\n    t = plt_next_token(\n        \u0026lexer,\n        source, // Some previously defined const char* to Pilot Scheme source.\n        strlen(source)\n    )\n\n    // Prints out the text value of the identified token.\n    printf(\"%s\\n\", t.text);\n} while(t.type != INVALID);\n\nfree(memory_pool);\n```\n\n### Testing 🛫Pilot Scheme\n\nTo test Pilot Scheme, run the appropriate `test.*` script for your platform in\nthe `./scripts/` directory. This will build the tests and produce an executable\nin a `./bin/` directory. Running the executable will run all the prepared tests\nfor Pilot Scheme.\n\n\u003e Only Windows PowerShell is supported at this time. Contributions for build\n\u003e scripts on other platforms are welcome!","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoebobmiles%2Fpilotscheme","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjoebobmiles%2Fpilotscheme","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoebobmiles%2Fpilotscheme/lists"}