{"id":20019824,"url":"https://github.com/jaimeloeuf/ss","last_synced_at":"2025-05-04T23:32:14.452Z","repository":{"id":156466934,"uuid":"304624832","full_name":"Jaimeloeuf/SS","owner":"Jaimeloeuf","description":"SimpleScript, A Simpler Programming Language (WIP)","archived":false,"fork":false,"pushed_at":"2022-11-27T13:37:16.000Z","size":590,"stargazers_count":8,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-08T14:12:19.275Z","etag":null,"topics":["fsharp","functional-language","hindley-milner","interpreter","javascript","jvm","language","language-experiment","language-spec","llvm","ocaml","programming-language","rust","scripting-language","simplescript","sml","typescript","wysiwyg"],"latest_commit_sha":null,"homepage":"https://github.com/Jaimeloeuf/SS/blob/master/spec.md","language":"Rust","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/Jaimeloeuf.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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-10-16T12:45:31.000Z","updated_at":"2023-12-20T18:57:10.000Z","dependencies_parsed_at":"2023-05-05T04:42:09.156Z","dependency_job_id":null,"html_url":"https://github.com/Jaimeloeuf/SS","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/Jaimeloeuf%2FSS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jaimeloeuf%2FSS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jaimeloeuf%2FSS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jaimeloeuf%2FSS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Jaimeloeuf","download_url":"https://codeload.github.com/Jaimeloeuf/SS/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252414520,"owners_count":21744117,"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":["fsharp","functional-language","hindley-milner","interpreter","javascript","jvm","language","language-experiment","language-spec","llvm","ocaml","programming-language","rust","scripting-language","simplescript","sml","typescript","wysiwyg"],"created_at":"2024-11-13T08:28:54.723Z","updated_at":"2025-05-04T23:32:14.444Z","avatar_url":"https://github.com/Jaimeloeuf.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SS (SimpleScript) [![Status](https://img.shields.io/badge/Status-Experimenting%20/%20Pre%20Pre%20Pre%20Technical%20Preview-green.svg)](#project-status)\nJust a simple programming language / experiment to build a simpler and less quirky JavaScript.  \n\n\u003e SimpleScript is a Strongly \u0026 Statically typed, Application programming language inspired by JavaScript/TypeScript, SML and Go, to be a simple and clean language that can target multiple execution methods from AOT compilation for binary executables to popular VM platforms (like JVM / BEAM / WASM) to interpretation and JIT compilation techniques.\n\n\n## Language design goals\n- Read the language's specification and design goals in [here](./spec.md)\n- See the [Language Design Guidelines here](./Language%20Design%20Guidelines.md)\n- See the [syntatic grammar definition in BNF](./syntatic%20grammar.bnf)\n\n### Core tenets\n1. Simple\n2. Simple to Understand --\u003e Intuitive code with no assumptions or quirkiness (WYSIWYG)\n3. Simple to Write --\u003e Intuitive semantics without requiring any hackery (WYSIWYG)\n\n### Specific language goals and features\n- Simple to read and understand by using explicit constructs to avoid surprises caused by implicit language constructs\n- Simple to write with easy and intuitive constructs and syntax\n- Strongly \u0026 Statically typed language with type inference and optional type annotations\n- High level language so that you don't have to deal with low level constructs of underlying hardware and execution models\n- Not too abstract, e.g. can support abstract ideas like meta programming, but not too extreme as it may reduce readability and in extension, maintainability\n- No stupid module issues like python\n\n\n## Project Goals and Milestones\n- Reference implementation of the language\n    - Intepreter in Rust\n    - Byte Code stack based Virtual Machine in Rust\n    - A compiler frontend for LLVM\n    - Perhaps a Graal/Wasm/JVM version to target a popular bytecode virtual machine\n    - Transpilation to JavaScript to run in browsers\n- Others\n    - Language server\n    - VS code and vim extensions\n\n\n## Project Status\nResearch.. Research.. and more Research..  \nCurrently:\n- Doing lots of research on programming languages\n    - Learning more about PLT (Programming Language Theory)\n    - Studying other languages\n    - Working on the type system with type inference\n- Working on the language spec whilst learning and building upon the research\n    - Module system design\n    - Researching and experimenting with how to embed Asynchronous programming / Concurrency / Parallel computing into the language semantics itself.\n- Working on different implementations\n    1. [An interpreter](./rust) in Rust for a modified lox language, inspired by this [book](https://craftinginterpreters.com/) and [rlox](https://github.com/julioolvr/rlox)\n        - The interpreter is not (at least, not yet) for SS, it is for a modified version of of the lox language, which I am building to learn more about building interpreters.\n        - Currently works with basic static type checking using type inference\n    2. A [bytecode virtual machine](./rvm) written in rust\n        - Just like the interpreter, this is not the final version of SS, mainly a modified version of the lox language too, used to experiment with VM design\n    3. A [Simply Typed Lambda Calculus](\u003c./Simply Typed Lambda Calculus\u003e) to experiment with lambda calculus and type inference.\n\n\n## Project layout \u0026 Commit style\nThis mono repo contains the following sub repos and their commit prefixes:\n- [ri](./ri)\n    - Interpreter written in Rust\n    - Commits prefixed with ```ri:``` or ```[rust-i]```\n- [rvm](./rvm)\n    - Bytecode virtual machine written in Rust\n    - Commits prefixed with ```rvm:``` or ```[rvm]```\n- [vsce](./vsce)\n    - Visual Studio Code Extension\n    - Will include both the extension and the language server in the future\n    - Commits prefixed with ```vsce:```\n- [Simply Typed Lambda Calculus](./Simply%20Typed%20Lambda%20Calculus)\n    - Simply Typed Lambda Calculus implemented in JavaScript, with a focus on type inference\n    - Commits prefixed with ```stlc:``` or ```[stlc]```\n\n\n## Author, Credits, License, Contributing\n### Author\n- [JJ](https://github.com/Jaimeloeuf)\n\n### Credits\nI had lots of help referencing other similar projects, credits are listed in the README of individual subrepos.\n\n### License\n[MIT](./LICENSE)\n\n### Contributing\nHit me up if you wanna!","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjaimeloeuf%2Fss","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjaimeloeuf%2Fss","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjaimeloeuf%2Fss/lists"}