Releases: MagnusOpera/FScript
Releases · MagnusOpera/FScript
0.29.0
- Improved LSP inlay/type rendering for map-related inference (
int|stringmap-key domain andunknown mapdisplay). - Added LSP inlay type hints for pattern-bound variables (for example
| Some x ->now showsx: int). - Added regression coverage for map-key/type inlay rendering and option-pattern variable inlay hints.
Full Changelog: 0.28.0...0.29.0
0.28.0
- Added local variable type hover in LSP.
- Added local variable type capture in type inference.
- Added VS Code extension auto-compile for development startup.
Full Changelog: 0.27.4...0.28.0
0.27.4
- fix long build time issue.
Full Changelog: 0.27.3...0.27.4
0.27.0
[0.27.0]
- Added structural update syntax support with
withinside structural literals:{| base with Field = value |}. - Structural updates can add new fields and work with multiline layout.
- Added parser/type/eval regression coverage for structural record update semantics.
[0.26.0]
- Split record literals:
{ ... }is nominal (must match one declared record type), while{| ... |}is structural. - Improved type identity and LSP navigation for records (definition/type-definition from annotations, record literal fields, and parameter usages).
- Added sample and regression coverage for annotation/literal semantics and record navigation (
samples/annotations-and-matching.fss, language + LSP tests).
[0.25.0]
Extension
- Fix nullness warnings.
- Implemented analysis state.
[0.24.0]
Tooling
- Added first-party VS Code extension (
vscode-fscript) with:- FScript syntax highlighting.
- Language Server features: diagnostics, completion, hover, symbols, go-to-definition, type-definition, references, rename, inlay hints, semantic tokens, quick fixes, and include-path navigation.
- Extension status bar + output channel integration.
- Added automatic .NET runtime acquisition support for the extension via
.NET Install Toolintegration (with PATH fallback). - Added tag-only publish workflow to distribute the extension to VS Code Marketplace and Open VSX.
Documentation
- Added dedicated map matching reference:
docs/map-matching-reference.md. - Added include-resolution details (path normalization, root confinement, include deduplication, file-aware errors) in
docs/syntax-and-indentation.md. - Added embedding cookbook section to
docs/embedding-fscript-language.md. - Added and expanded onboarding tutorial and README navigation polish.
Full Changelog: 0.26.0...0.27.0
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