- Natural languages support (initially English, Italian, and Hebrew)
- Abbreviations support (when abbreviated names clash, full names are used instead)
- Type error blame support (key to accept type and move the type error elsewhere)
- Redesigned syntax for better typability and completions
- Significantly improved performance and UI responsiveness
- New auto-names scheme based on isomorphic naming
- The exported JS code supports latest node.js versions
- Various other bug fixes and code improvements
2018.11.19This release fixes the following bugs:
- Linux: In some setups with some input methods, typing did not work.
- macOS: The app bundle opened in low resolution mode.
- A missing parenthesis bug
- A bug causing operators to be inserted at wrong position
- A navigation bug when the hole results popup is placed above the hole
2018.10.24Initial release of Lamdu, including 7 key features:
- WYTIWYS projectional editing. Projectional editing ensures that syntax errors and name errors are impossible to make, while the What-You-Type-Is-What-You-See text-like interface makes the experience intuitive and familiar. Note that this concept isn't unique to Lamdu - MPS also implements a mostly WYTIWYS approach.
- A novel UI framework for keyboard oriented editing of rich structured data, with responsive layout (the code's layout adapts to the screen or window's width) and animations for structural edits (making changes easier to follow).
- Live-reloading for pure computations. Lamdu employs a distinction between pure computations and effectful code, like Haskell, and uses this distinction to enable safe live programming, which performs live-reloading only for pure computations, while requiring an explicit action to execute effectful programs.
- Live programming with value annotations displayed under subexpressions (rather than only a single REPL result). Note that Flogo 2 appears to be the first project to come up with this notation.
- A novel approach for type-errors: When filling a hole with a term with a mismatching type, it is wrapped in a "fragment" (aka non-empty hole), so that type inference keeps working continuously everywhere.
- A novel decentralized solution for cross-module blame assignment for type errors. For every definition, Lamdu remembers the types for all of its dependencies. When a dependency's type changes, type inference still works with the saved type, with an "update" action offered for the type-mismatch.
- Projectional Syntactic Sugar. The lower-level AST, which we call "Lamdu Calculus", is checked for patterns which are sugared. Sugaring happens automatically, reducing burdens of choice and manual conversion between equivalent syntax forms when making changes.