The-NextGen-Project / jet

Licence: MIT license
A Fast C and Python like Programming Language that puts the Developer first. WIP

Programming Languages

C++
36643 projects - #6 most used programming language
CMake
9771 projects

Projects that are alternatives of or similar to jet

hascal
Hascal is a general purpose and open source programming language designed to build optimal, maintainable, reliable and efficient software.
Stars: ✭ 56 (+36.59%)
Mutual labels:  compiler-design, compiler-optimization
CodeBucket
A beginner-friendly project to help you in open-source contributions. Made specifically for contributions in HACKTOBERFEST! Please leave a star ⭐ to support this project! ✨
Stars: ✭ 22 (-46.34%)
Mutual labels:  open-source-project, contribute-repository
Ultimate-Web-Development-Resources
A collection of web development resources
Stars: ✭ 140 (+241.46%)
Mutual labels:  contribute-repository, contribute
CaptCC
A tiny C compiler written purely in JavaScript.
Stars: ✭ 175 (+326.83%)
Mutual labels:  compiler-design, compiler-optimization
tiny-lang
tiny-lang — A different programming language. Supports a bunch of spoken languages.
Stars: ✭ 26 (-36.59%)
Mutual labels:  compilers, compiler-design
AwesomeCompiler
The Big list of the github, open-source compilers.
Stars: ✭ 27 (-34.15%)
Mutual labels:  compilers, compiler-design
regal86
Register Allocator for 8086
Stars: ✭ 62 (+51.22%)
Mutual labels:  compiler-design, compiler-optimization
awesome-internals
A curated list of awesome resources and learning materials in the field of X internals
Stars: ✭ 78 (+90.24%)
Mutual labels:  compilers, compiler-optimization
pyCompiler
Python Compiler
Stars: ✭ 13 (-68.29%)
Mutual labels:  compilers, compiler-design
compiler-course-unipi
Lab of the course Languages, Compilers and Interpreters (Cod. 653AA) @ UNIPI
Stars: ✭ 18 (-56.1%)
Mutual labels:  compilers, compiler-design
librxvm
non-backtracking NFA-based regular expression library, for C and Python
Stars: ✭ 57 (+39.02%)
Mutual labels:  compilers, compiler-design
One
OneLang: The One System Programming Language. (release as soon)
Stars: ✭ 120 (+192.68%)
Mutual labels:  compilers, open-source-project
Black-Tool
Install the tools and start Attacking , black-tool v5.0 ! ⬛
Stars: ✭ 239 (+482.93%)
Mutual labels:  software
first-contrib-app
A search engine to find good beginner issues across Github and become an open source contributor !
Stars: ✭ 33 (-19.51%)
Mutual labels:  contribute
go-recipes
🦩 Tools for Go projects
Stars: ✭ 2,490 (+5973.17%)
Mutual labels:  compilers
OpenCV Raspberry pi TBB
Latest pre-compiled binary of Pre-released & Stable OpenCV (4.0.0) along with TBB (2018-Update 6) for Raspberry Pi.
Stars: ✭ 46 (+12.2%)
Mutual labels:  fastest
django-turbo-response
Hotwired/Turbo Django response helpers
Stars: ✭ 66 (+60.98%)
Mutual labels:  turbo
Marabu
Music Synthetiser
Stars: ✭ 440 (+973.17%)
Mutual labels:  software
rab
Rusty Armor Builds - Monster Hunter Rise Armor Set Creation Tool
Stars: ✭ 29 (-29.27%)
Mutual labels:  software
hot-glue
Rapid scaffold builder for Turbo-Rails and Hotwire
Stars: ✭ 58 (+41.46%)
Mutual labels:  turbo

Jet GitHub license Linux Mac Windows

Fast Language for Developing Consistent Native, Mobile App, and Web Applications.

NOTE: The language is in its early development stages. Don't expect syntax to be fixed until v1.0. If you want to see the development branch, you can view it here. The main branch is the most stable with all tests passing on every platform.

UPDATE: In order for faster development as well as for faster prototyping, parts of the language are being designed in Rust. Currently, the backend has been developed in Rust and is able to generate C code and executables.

Resources

Download

git clone https://github.com/The-NextGen-Project/jet.git
cd jet
git submodule init
git submodule update
cmake -DCMAKE_BUILD_TYPE=Release -GYourBuildGenerator
make

Note: For building the project on windows, it can be done by simply building with MSVC or, if you have MinGW installed it will work with that C compiler as well. For setting up a build system that is fast, I reccommend using Ninja which works on Windows, Linux, and Mac as a CMake generator.

A Test Flight

Offering a little taste of the lang, here is some syntax. A hello world program is as follows:

print("Hello, World!")

Fibonacci Implemented in the lang would be as follows:

fib => (n: i32) i32 {
  return match n {
    0 -> 0,
    1 -> 1,
    n -> fib(n - 1) + fib(n - 2)
  };
}

The language will be using advanced type-inference in order to limit the amount of static typing that is needed. Jet is by default, statically-typed, however, types are usually inferred by the langugage most of the time, and generate clean and easy to read code. This way we get to appeal to both those who like static typing and those that prefer mainly dynamic typing.

Error Messages

Jet has amazing error messages. Even for simple error, Jet makes sure that the programmer knows the error and why their code is causing the error is invalid. For example, look at a lexer error message pertaining to an integer overflow:

The error message points out the initial error, points out the offending line and character, gives a potential solution, and explains why what the programmer wrote was invalid. These components identify the problem and give opportunities for a solution to help the programmer debug and fix their error. We took inspiration from both Rust and Elm to produce a hybrid error message type that encapsulates all that the programmer needs to identify the problem and solve it.

Let's have a look at another example, for an unexpected token in the global scope:

People, especially beginners, do not understand where and why they are getting errors. Written errors like this one help provide clarity and provide potential solutions to a problem they may not understand. By telling the programmer what is directly valid, it prevents programmers to lookup documentation unless it is necessary to explain an error.

Progress

  • Lexer
  • Parser
  • Semantic Analysis (WIP)
  • IR-Gen
  • IR-Optimization
  • C-Codegen (WIP)
  • x64 Code Generation (Testing Phase In Progress)
  • ARM64 Code Generation (WIP)
  • Link

Contributing

We are very excited that you have considered contributing to Jet as part of the NextGen Project. This project is a community effort and we would love to have many of you who are willing to help. Before your start your wonderful contribution, have a look at our Contributing Guidelines.

License

We want the project to be able to integrate with other with a lot of other open source software and determined that we will be using the MIT License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].