https://github.com/JohnDTill/Forscape
Scientific computing language
https://github.com/JohnDTill/Forscape
code-editor equation-editor inline-equations maths matrices open-source programming-language scientific-computing typesetting unicode
Last synced: 2 days ago
JSON representation
Scientific computing language
- Host: GitHub
- URL: https://github.com/JohnDTill/Forscape
- Owner: JohnDTill
- License: mit
- Created: 2021-11-13T11:34:40.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-12-01T20:20:37.000Z (4 months ago)
- Last Synced: 2024-12-01T21:25:42.502Z (4 months ago)
- Topics: code-editor, equation-editor, inline-equations, maths, matrices, open-source, programming-language, scientific-computing, typesetting, unicode
- Language: C++
- Homepage:
- Size: 8.86 MB
- Stars: 178
- Watchers: 3
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-programming-languages - Forscape - Scientific computing language. Forscape solves engineering problems with an unprecedented level of abstraction so you get reliable results quickly. This high-level approach starts with intuitive syntax. Program with the same notation you use to write equations thanks to our innovative math rendering with semantic formatting. Matrices, fractions, symbols- write code using the same notation you use to think through problems on the whiteboard. (Uncategorized / Uncategorized)
README
# 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](https://github.com/JohnDTill/Forscape/releases/download/pre-alpha-0.0.2/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](./.github/workflows/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](https://graphviz.org/) on system path for debugging AST#### External libraries / assets (no setup required)
* [Eigen](http://eigen.tuxfamily.org/index.php?title=Main_Page) (Header-only linear algebra)
* [parallel-hashmap](https://github.com/greg7mdp/parallel-hashmap) (Header-only, very fast and memory-friendly hashmaps and btrees)
* [readerwriterqueue](https://github.com/cameron314/readerwriterqueue) (Lock-free queue for single-producer/single-consumer messages)
* [spdlog](https://github.com/gabime/spdlog) (Very fast, header-only/compiled, C++ logging library.)
* Fonts with extensive unicode support:
* [Computer Modern](https://www.fontsquirrel.com/fonts/computer-modern)
* [JuliaMono](https://github.com/cormullion/juliamono)
* [Quivira](http://quivira-font.com/)## 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](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](https://forscape.atlassian.net/jira/software/c/projects/FOR/boards/1) 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](http://www.craftinginterpreters.com/) is an excellent programming-languages primer and instant classic for anyone wanting to experiment with languages.
[](https://github.com/JohnDTill/Forscape/actions/workflows/cpp_integration_tests.yml)
[](https://github.com/JohnDTill/Forscape/actions/workflows/cpp_integration_tests_32bit.yml)
[](https://github.com/JohnDTill/Forscape/actions/workflows/cpp_integration_tests_clang.yml)
[](https://github.com/JohnDTill/Forscape/actions/workflows/cpp_integration_tests_win.yml)
[](https://github.com/JohnDTill/Forscape/actions/workflows/cpp_integration_tests_mac.yml)
[](https://github.com/JohnDTill/Forscape/actions/workflows/qt_integration_tests.yml)
[](https://github.com/JohnDTill/Forscape/actions/workflows/qt_integration_tests_mac.yml)
[](https://github.com/JohnDTill/Forscape/actions/workflows/qt_integration_tests_qt6.yml)
[](https://github.com/JohnDTill/Forscape/actions/workflows/app_compiles_and_runs.yml)
[](https://github.com/JohnDTill/Forscape/actions/workflows/promote_windows_installer.yml)
[](https://github.com/JohnDTill/Forscape/actions/workflows/source_instructions.yml)