This project was built by 3 ECE Master's students collaboratively to apply their knowledge of Rust to the design of a new programming language Fnlang, fnc (Fnlang Compiler), and FnIde (Fnlang IDE).
We have written a number of applications and system software tools (e.g. an OS kernel) through university courses and extracurricular projects. Therefore, writing another general-purpose application was not appealing to us for this Rust-based project. Among the entire technology stack that makes a computer work, how compilers do their work was still somewhat of a mystery to us, so we wanted to create one from the ground up and tackle this last remaining puzzle piece. Since the team members all have a passion for programming languages, we wanted to experiment with designing a new programming language for developers.
For this project, we set out to design our own programming language and write a language-specific IDE for its developers, which include a code editor and a compiler. This is an interesting project that allowed us to dive into the more arcane world of language design, and we took this opportunity to come up with a new language that we call "Fnlang" with a number of properties that isn’t available in many of the more popular languages. The Fnlang IDE, named "FnIde", creates a tool for Fnlang developers to more easily write Fnlang code. For the compiler which is available in both CLI (command-line interface) and FnIde, we chose to make JavaScript as the compiled output due to its expressive syntax, feature-rich runtime, and reflective properties, which relieves us from the time-consuming process of implementing complex runtime infrastructure like memory management, allowing us to complete the project within a limited time frame.
Although the source code is made private on GitHub, the README is available with demos of key features. If the idea interests you, please contact the authors for access to the private repository.