{"id":13495529,"url":"https://github.com/racketscript/racketscript","last_synced_at":"2026-02-20T00:30:49.958Z","repository":{"id":41882128,"uuid":"52491211","full_name":"racketscript/racketscript","owner":"racketscript","description":"Racket to JavaScript Compiler","archived":false,"fork":false,"pushed_at":"2026-02-18T16:57:13.000Z","size":1277,"stargazers_count":732,"open_issues_count":81,"forks_count":32,"subscribers_count":31,"default_branch":"master","last_synced_at":"2026-02-18T20:07:36.055Z","etag":null,"topics":["compiler","javascript","programming-language","racket"],"latest_commit_sha":null,"homepage":"","language":"Racket","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/racketscript.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"COPYING.md","code_of_conduct":"CODE_OF_CONDUCT.md","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":"2016-02-25T02:38:38.000Z","updated_at":"2026-02-18T17:03:24.000Z","dependencies_parsed_at":"2024-06-18T10:45:11.622Z","dependency_job_id":"b0a8a9a2-bf75-41a7-952f-f96c920dd217","html_url":"https://github.com/racketscript/racketscript","commit_stats":{"total_commits":717,"total_committers":19,"mean_commits":37.73684210526316,"dds":0.2733612273361228,"last_synced_commit":"bff853c802b0073d08043f850108a57981d9f826"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/racketscript/racketscript","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/racketscript%2Fracketscript","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/racketscript%2Fracketscript/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/racketscript%2Fracketscript/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/racketscript%2Fracketscript/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/racketscript","download_url":"https://codeload.github.com/racketscript/racketscript/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/racketscript%2Fracketscript/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29637408,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-19T22:32:43.237Z","status":"ssl_error","status_checked_at":"2026-02-19T22:32:38.330Z","response_time":117,"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":["compiler","javascript","programming-language","racket"],"created_at":"2024-07-31T19:01:35.624Z","updated_at":"2026-02-20T00:30:49.933Z","avatar_url":"https://github.com/racketscript.png","language":"Racket","readme":"\u003cimg src=\"logo.svg\" align=\"right\" height=\"110\" /\u003e\n\n# RacketScript\n\n[![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](COPYING.md)\n[![Tests](https://github.com/racketscript/racketscript/actions/workflows/racket.yml/badge.svg)](https://github.com/racketscript/racketscript/actions/workflows/racket.yml)\n[![ESLint](https://github.com/racketscript/racketscript/actions/workflows/node.js.yml/badge.svg)](https://github.com/racketscript/racketscript/actions/workflows/node.js.yml)\n[![Coverage Status](https://codecov.io/gh/racketscript/racketscript/coverage.svg?branch=master)](https://codecov.io/gh/racketscript/racketscript?branch=master)\n[![Try Online](https://img.shields.io/badge/try_it-online!-ff9900.svg)](http://play.racketscript.org)\n\n[![Racket](https://img.shields.io/badge/-Racket-darkred?logo=racket)](https://racket-lang.org)\n[![Discourse users](https://img.shields.io/discourse/users?label=Discuss%20on%20Racket%20Discourse\u0026logo=racket\u0026server=https%3A%2F%2Fracket.discourse.group)](https://racket.discourse.group/)\n[![Racket Discord](https://img.shields.io/discord/571040468092321801?label=Chat%20on%20Racket%20Discord\u0026logo=racket)](https://discord.gg/6Zq8sH5)\n\nRacketScript is an **experimental** lightweight Racket to JavaScript (ECMAScript 6)\ncompiler. RacketScript aims to leverage both JavaScript and Racket's ecosystem,\nand make interoperability between them clean and smooth.\n\nRacketScript takes in Racket source files, uses Racket's macro expander to\nproduce [Fully Expanded\nPrograms](https://docs.racket-lang.org/reference/syntax-model.html#%28part._fully-expanded%29),\nand then compile these fully expanded programs to JavaScript. RacketScript\ncurrently supports only a subset of Racket.\n\n## Try RacketScript\n\nYou can try RacketScript in your browser\nat [RacketScript Playground](http://play.racketscript.org).\n\nYou may alo be interested in [Rackt](https://rackt-org.github.io) - An ultrasmall (~70 loc) React wrapper written in RacketScript.\n\n## Disclaimer\n\nRacketScript is **work-in-progress** and is not mature and stable. Several\nRacket features and libraries are not yet implemented (eg. number pyramid,\ncontracts, proper tail calls, continuations). There are also quite a few missing\nprimitive functions. That said, we encourage experimentation, user feedback,\ndiscussions, bug reports and pull requests.\n\n## Installation\n\nFollowing system packages are required:\n\n- [Racket](http://www.racket-lang.org/) 6.12 or higher\n- [NodeJS](https://nodejs.org/) (14.0 or higher) and NPM\n- Make\n\n### Quick Install\n\nRacketScript can be installed using the Racket package manager `raco`:\n\n```sh\nraco pkg install racketscript\n```\n\nSee [Basic Usage](#basic-usage) to get started.\n\n### Install from Github\n\n```sh\n# Clone RacketScript\ngit clone git@github.com:racketscript/racketscript.git`\ncd racketscript\n\n# Build and install\nmake setup\n```\n\nIf you do not wish to pollute your root NPM directory, you can set a\ncustom global location by changing your `npmrc` (eg. `echo \"prefix =\n$HOME/.npm-packages\" \u003e\u003e ~/.npmrc`. Then add `/prefix/path/above/bin`\nto your `PATH`.\n\n## Basic Usage\n\nRacketScript compiler is named `racks`.\n\n```sh\nracks -h # show help\n```\n\nTo compile a Racket source file:\n\n```sh\n# Installs all NPM dependencies and compile file.rkt\nracks /path/to/file.rkt\n```\n\nThe above command will create a output build directory named\n`js-build`, copy RacketScript runtime, copy other support files,\ninstall NPM dependencies, compile `file.rkt` and its dependencies.\n\nThe compiled JavaScript modules typically goto one of following three\nfolders:\n\n- \"modules\": The normal Racket files.\n- \"collects\": Racket collects source files.\n- \"links\": Other third party packages.\n- \"dist\": Contains sources compiled to ES6 or bundled JavaScript ready\nfor distribution.\n\nHere are few other examples that would come in handy:\n\n```sh\n# To skip `npm install` step. Useful when building\n# for second time.\nracks -n /path/to/module-name.rkt\n\n# Run the assembled JavaScript module.\nnode js-build/modules/module-name.rkt.js\n\n# Use `-b` to format the assembled JavaScript code use `-b`. Assumes\n# `js-beautify` is available in `$PATH`.\nracks -b /path/to/module-name.rkt\n\n# Override default output directory\nracks -d /path/to/output/dir /path/to/module-name.rkt\n\n# Print JavaScript output to stdout\nracks --js --js-beautify /path/to/module-name.rkt\n```\n\nBy default tail call optimization is turned off. To enable translation\nof self recursive tail calls to loop, pass `--enable-self-tail` flag.\n\n```sh\nracks --enable-self-tail /path/to/source.rkt\n```\n\n### Browser\n\nMost browsers can load RacketScript modules directly without any external\ndependencies `\u003cscript type=\"module\" src=\"path/to/module.rkt.js\"\u003e\u003c/script\u003e`.\n\n### Module Bundler (Webpack)\n\nFor deployment, you may want to bundle all generated modules into single\nJavaScript file. RacketScript can generate some boiler-plate for using\nWebpack/Babel, however we recommend you to use your own configuration.\n\n```sh\n# Use `--target` or `-t` flag.\nracks --target webpack /path/to/source.rkt\n\n# Call webpack to bundle in `js-build` directory. Will produce\n# single JavaScript bundle in `js-build/dist` directory.\nnpx webpack\n```\n\n## Contributing to RacketScript\n\nPlease read [Contribution Guidelines](CONTRIBUTING.md).\n\n## Troubleshooting\n\nPlease read the [Troubleshooting Wiki](https://github.com/racketscript/racketscript/wiki/Troubleshooting).\n\n## Related Work\n\n- [Whalesong](https://github.com/soegaard/whalesong)\n- [Urlang](https://github.com/soegaard/urlang)\n","funding_links":[],"categories":["Racket","Languages","Compilers"],"sub_categories":["JavaScript"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fracketscript%2Fracketscript","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fracketscript%2Fracketscript","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fracketscript%2Fracketscript/lists"}