From f12861ecfd87d35d32ab98e005faf8f8e788cf27 Mon Sep 17 00:00:00 2001 From: David Peter Date: Mon, 23 Oct 2023 21:23:23 +0200 Subject: [PATCH] Update reasons-for-rewriting-in-rust.md --- assets/reasons-for-rewriting-in-rust.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/assets/reasons-for-rewriting-in-rust.md b/assets/reasons-for-rewriting-in-rust.md index 2fd839dc..3e29ab1d 100644 --- a/assets/reasons-for-rewriting-in-rust.md +++ b/assets/reasons-for-rewriting-in-rust.md @@ -1,15 +1,15 @@ -## Reasons for rewriting Insect in Rust: +## Reasons why I rewrote Insect in Rust: - - Rust is much more popular amongst developers => more possible contributors - - A redesign from scratch would allow me to focus on areas of improvement: - - Introducing the concept of physical *dimensions* into the language - - Experimenting with a static dimension/unit checker - - Allowing user-defined units => move all of the unit definitions to the language - - Better parser errors - - Automated tracking of significant digits - - Support for rational numbers? Complex numbers? Intervals? - - Support for binary and hexadecimal numbers, bitwise operators, etc + - Insect is written in PureScript, which is a niche programming language with a (fantastic but) small community. Rust is much more popular amongst developers, so + it is much easier to find contributors in a Rust project than in a PureScript project. This has been an actual problem with Insect, since I got multiple comments + over the years that people wanted to contribute, but couldn't. + - A redesign from scratch allowed me to focus on the following areas of improvement: + - Introducing the concept of physical *dimensions* into the language (see https://numbat.dev/doc/dimension-definitions.html) + - Adding a static type system (see https://numbat.dev/doc/type-system.html) + - Allowing users to define their own units (https://numbat.dev/doc/unit-definitions.html) + - Being able to define constants and the whole unit system in the language itself (https://numbat.dev/doc/prelude.html) + - Much better error messages - Support for notepad-style computations (Mathematica/Jupyter style) - - The PureScript implementation is *slow*. A Rust-based parser & interpreter could be much faster. Not just + - The PureScript implementation is *slow*. Numbats Rust-based parser & interpreter is orders of magnitude faster. Not just on the command-line (startup speed!) but also on the Web (via WASM) - - It would be a nice playground for a WASM project + - I always wanted to experiment with WASM and Numbat was a perfect excuse for this.