Skip to content

Releases: MagnusOpera/FScript

0.29.0

14 Feb 08:19

Choose a tag to compare

  • Improved LSP inlay/type rendering for map-related inference (int|string map-key domain and unknown map display).
  • Added LSP inlay type hints for pattern-bound variables (for example | Some x -> now shows x: 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

14 Feb 00:41

Choose a tag to compare

  • 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

14 Feb 00:01

Choose a tag to compare

  • fix long build time issue.

Full Changelog: 0.27.3...0.27.4

0.27.0

13 Feb 23:12

Choose a tag to compare

[0.27.0]

  • Added structural update syntax support with with inside 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 Tool integration (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

12 Feb 08:24

Choose a tag to compare

  • 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

11 Feb 21:57

Choose a tag to compare

  • 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

11 Feb 21:13

Choose a tag to compare

  • 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

11 Feb 14:46

Choose a tag to compare

  • 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

11 Feb 12:56

Choose a tag to compare

  • 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

11 Feb 12:25

Choose a tag to compare

  • 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