GithubHelp home page GithubHelp logo

jaimeloeuf / ss Goto Github PK

View Code? Open in Web Editor NEW
8.0 4.0 0.0 590 KB

SimpleScript, A Simpler Programming Language (WIP)

Home Page: https://github.com/Jaimeloeuf/SS/blob/master/spec.md

License: MIT License

Rust 95.63% JavaScript 4.25% Scheme 0.12%
language language-experiment javascript typescript rust llvm jvm programming-language functional-language interpreter

ss's Introduction

SS (SimpleScript) Status

Just a simple programming language / experiment to build a simpler and less quirky JavaScript.

SimpleScript is a Strongly & 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.

Language design goals

Core tenets

  1. Simple
  2. Simple to Understand --> Intuitive code with no assumptions or quirkiness (WYSIWYG)
  3. Simple to Write --> Intuitive semantics without requiring any hackery (WYSIWYG)

Specific language goals and features

  • Simple to read and understand by using explicit constructs to avoid surprises caused by implicit language constructs
  • Simple to write with easy and intuitive constructs and syntax
  • Strongly & Statically typed language with type inference and optional type annotations
  • High level language so that you don't have to deal with low level constructs of underlying hardware and execution models
  • 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
  • No stupid module issues like python

Project Goals and Milestones

  • Reference implementation of the language
    • Intepreter in Rust
    • Byte Code stack based Virtual Machine in Rust
    • A compiler frontend for LLVM
    • Perhaps a Graal/Wasm/JVM version to target a popular bytecode virtual machine
    • Transpilation to JavaScript to run in browsers
  • Others
    • Language server
    • VS code and vim extensions

Project Status

Research.. Research.. and more Research..
Currently:

  • Doing lots of research on programming languages
    • Learning more about PLT (Programming Language Theory)
    • Studying other languages
    • Working on the type system with type inference
  • Working on the language spec whilst learning and building upon the research
    • Module system design
    • Researching and experimenting with how to embed Asynchronous programming / Concurrency / Parallel computing into the language semantics itself.
  • Working on different implementations
    1. An interpreter in Rust for a modified lox language, inspired by this book and rlox
      • 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.
      • Currently works with basic static type checking using type inference
    2. A bytecode virtual machine written in rust
      • 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
    3. A Simply Typed Lambda Calculus to experiment with lambda calculus and type inference.

Project layout & Commit style

This mono repo contains the following sub repos and their commit prefixes:

  • ri
    • Interpreter written in Rust
    • Commits prefixed with ri: or [rust-i]
  • rvm
    • Bytecode virtual machine written in Rust
    • Commits prefixed with rvm: or [rvm]
  • vsce
    • Visual Studio Code Extension
    • Will include both the extension and the language server in the future
    • Commits prefixed with vsce:
  • Simply Typed Lambda Calculus
    • Simply Typed Lambda Calculus implemented in JavaScript, with a focus on type inference
    • Commits prefixed with stlc: or [stlc]

Author, Credits, License, Contributing

Author

Credits

I had lots of help referencing other similar projects, credits are listed in the README of individual subrepos.

License

MIT

Contributing

Hit me up if you wanna!

ss's People

Contributors

jaimeloeuf avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.