Releases: MagnusOpera/FScript
Releases · MagnusOpera/FScript
0.23.1
- Added comprehensive Getting Started tutorial (docs/getting-started-tutorial.md) with progressive onboarding: install, basic/flow types, pattern matching, partial matching,
recursion, stdlib, includes/modules, exports, and hosting/security. - Reworked README to prioritize onboarding:
- dedicated Getting Started Tutorial section
- repository development instructions moved after install/tutorial content
- clarified stdlib vs host externs (List., Map., Option.* are prelude stdlib).
- Minor docs polish and navigation improvements:
- better cross-links between tutorial, samples, and reference docs.
Full Changelog: 0.23.0...0.23.1
0.22.0
- Added generic map key support for string and int in FScript.
- Kept {} polymorphic and inference-driven, so it resolves by usage.
- Updated map indexer, map pattern matching, and map spread typing to work with typed keys.
- Added validation errors for unsupported map key types.
- Updated tests and samples behavior accordingly; full test suite and smoke tests pass.
- Updated documentation.
Full Changelog: 0.21.0...0.22.0
0.20.0
- Improved map match semantics to support intuitive key-based lookup patterns.
- Added support for multi-key map patterns, with optional ..tail.
- Preserved dynamic extraction patterns ({ [k] = v; ..tail }).
- Added map-pattern sample (samples/map-matching.fss) and updated syntax/tests accordingly.
Full Changelog: 0.19.0...0.20.0
0.19.0
- Added when guards to match cases (| pattern when condition -> expr).
- Guards are type-checked as bool and evaluated after pattern binding.
- Works uniformly across list, record, tuple, union, and map patterns.
- Added tests and docs updates, plus a sample demonstrating guarded map matching.
Full Changelog: 0.18.0...0.19.0
0.18.0
- Added native map spread/update syntax: { [k] = v; ..tail } and { ..tail }.
- Removed map support from @; append is now list-only.
- Updated Map stdlib internals to use spread syntax.
- Added parser/type/eval tests for map spread and map-append rejection.
- Updated docs and types-showcase sample to reflect the new map update style.
Full Changelog: 0.17.0...0.18.0
0.17.0
- Added #include "file.fss" support with cycle detection, sandbox-aware path checks, and file-aware error reporting.
- Added module support for included scripts (module Foo) with scoped symbol resolution.
- Introduced a protected built-in stdlib prelude and migrated List/Option core functions from runtime externs to stdlib scripts.
- Added map pattern matching ({} and { [k] = v; ..tail }) and migrated map helpers to stdlib, removing collection extern files.
- Updated samples/docs to cover includes, modules, and map matching.
Full Changelog: 0.16.0...0.17.0
0.16.0
- Added attribute-based exports with [] (case-sensitive), replacing export let.
- Added qualified discriminated union support:
- constructor usage with Type.Case
- match patterns with Type.Case
- Preserved backward compatibility for unqualified DU cases (Case still works).
- Extended parser/type-inference/eval test coverage for export attributes and qualified DU behavior.
Full Changelog: 0.15.2...0.16.0
0.15.2
- Update README.
Full Changelog: 0.15.1...0.15.2
0.15.0
- Added NuGet package icon metadata for MagnusOpera.FScript.Language and MagnusOpera.FScript.Runtime.
- Updated README.
Full Changelog: 0.14.0...0.15.0
0.14.0
- Added support for multiline lambda bodies inside parenthesized call chains, including correct pipeline continuation after ).
- Added support for aligned multiline let parameter declarations (strict column alignment).
- Tightened layout rules for multiline literals and inline record type annotations.
- Improved parse diagnostics for layout issues: misindented expressions now report explicit indentation errors instead of generic unexpected-token errors.
- Updated syntax/indentation documentation and parser regression tests accordingly.
Full Changelog: 0.13.0...0.14.0