Skip to content

Releases: MagnusOpera/FScript

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

0.16.0

10 Feb 23:00

Choose a tag to compare

  • 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

10 Feb 21:15

Choose a tag to compare

  • Update README.

Full Changelog: 0.15.1...0.15.2

0.15.0

10 Feb 20:44

Choose a tag to compare

  • 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

10 Feb 07:50

Choose a tag to compare

  • 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