Awesome
Forscape
A language and editor for scientific computation
Focus on the problem, not the implementation details
Forscape aims to solve engineering problems with low-cost abstraction, safety checks, and an intuitive user experience. The editor supports math rendering so that objects such as matrices, fractions, and symbols can be programmed in parity with scientific papers and notes.
Forscape has particular emphasis on matrices. Standard matrix operations such as multiplication, norm, cross product, transpose, etcetera are supported with mathematical syntax.
The editor code-model interaction has various features for matrices. The syntax highlighting will bold matrix identifiers. Where possible, dimensions are checked at compile time with violations highlighted in real time while typing. Hovering over an identifier will show the compile-time dimensions in the tooltip.
Installation
But first, a warning. Forscape is in early alpha. Feedback and bug reports are welcome, but backward compatibility will be broken. The language syntax will be broken. The file encoding will be broken. Crashes are likely.
Windows
Download and run ForscapeInstaller_Win64.exe. Alternately, install the development prerequisites listed below and compile from source.
Linux
Compile from source following the instructions in source_instructions.sh.
Development Prerequisites
- Qt5/6 (https://www.qt.io/download)
- QtSvg module
- Python3 on the system path
- Conan (after installing, pick up the Qt plugin for easy use)
Optional
- GraphViz on system path for debugging AST
External libraries / assets (no setup required)
- Eigen (Header-only linear algebra)
- parallel-hashmap (Header-only, very fast and memory-friendly hashmaps and btrees)
- readerwriterqueue (Lock-free queue for single-producer/single-consumer messages)
- spdlog (Very fast, header-only/compiled, C++ logging library.)
- Fonts with extensive unicode support:
License
This project aims to be financially maintainable while ultimately resulting in an entirely open source codebase. The core is licensed under the MIT License - see the LICENSE file for details. Additional modules will be sold commercially for a fixed period starting at release, after which they will be added to the open source core.
Contributing
Creating solid design foundations is a current challenge, but this work is interesting and anyone who is willing to tolerate a bit of ambiguity between prototype and production code may enjoy contributing. Forscape development is about learning, having fun, and embracing the Neumann architecture.
Progress and feature ideas are tracked in a Jira board and backlog. Tests are run automatically by GitHub runners and required to pass before merging to main. There is no official communication outlet yet -- feel free to reach out to me directly with questions or interest.
There is no documentation yet, either user or design docs. Crafting Interpreters is an excellent programming-languages primer and instant classic for anyone wanting to experiment with languages.