Skip to content

Latest commit

 

History

History
728 lines (431 loc) · 33 KB

File metadata and controls

728 lines (431 loc) · 33 KB

Changelog

All notable changes to FScript are documented in this file.

[Unreleased]

[0.66.0]

  • Moved website publishing into the primary release workflow so docs deploy with the rest of the published release pipeline.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.65.0...0.66.0

[0.65.0]

  • Changed website publishing to deploy docs on GitHub release publication instead of on tag push.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.64.0...0.65.0

[0.64.0]

  • Added optional list index access with list[index] plus the List.tryItem stdlib helper.
  • Expanded stdlib docs with built-in Env coverage, complete top-level module reference pages, and a dedicated native-types/indexer reference.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.63.0...0.64.0

[0.63.0]

  • Documented the CLI-injected Env value and stdlib Environment/FsKind types, and filled missing stdlib reference entries such as String.endsWith.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.62.0...0.63.0

[0.62.0]

  • Packaged the fscript CLI as the MagnusOpera.FScript .NET tool, added it to make pack-nuget, and documented .NET tool installation and update flows.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.61.0...0.62.0

[0.61.0]

  • Fixed JSON and XML record deserialization to treat missing optional fields as None instead of failing the whole decode.
  • Updated GitHub Actions .NET setup to use SDK 10.0.201.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.60.1...0.61.0

[0.60.1]

  • Fixed website release builds to mark the pushed tag as the latest docs version so freshly released docs do not show the unmaintained-version banner.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.60.0...0.60.1

[0.60.0]

  • Added a new MagnusOpera.FScript.TypeProvider package that type-checks scripts at compile time and exposes exported functions as strongly-typed F# members with runtime signature compatibility checks.
  • Stabilized type-provider integration tests in CI by hardening spawned dotnet process handling and adding job-level CI timeouts to prevent long hangs.
  • Added a Docusaurus-based documentation website under website/ focused on FScript language learning, examples, and embedding guidance.
  • Added tag-triggered GitHub Pages deployment and release-time docs version snapshotting for the website.
  • Expanded website content with didactic language chapters, embedded runnable examples, detailed stdlib reference, VS Code/Open VSX setup, and practical embedding/type-provider guides.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.59.0...0.60.0

[0.59.0]

  • Removed the obsolete Stdlib shim module and switched embedded-source import errors to generic wording now that stdlib is fully native.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.58.0...0.59.0

[0.58.0]

  • Added String.endsWith to the language/runtime built-ins with corresponding type inference support.
  • Optimized runtime invocation paths by reducing argument list churn and improving closure application in Eval.invokeValue.
  • Cached stdlib loading and reserved-name computation to avoid repeated parse/inference work.
  • Optimized ScriptHost exported symbol access by caching function/value sets and maps for faster invoke and getValue.
  • Moved stdlib List.*, Option.*, Map.*, Environment, and FsKind definitions to native language/runtime built-ins to remove stdlib source parsing/inference at load time.
  • Removed virtual stdlib source navigation plumbing from LSP (fscript/stdlibSource) and updated injected symbol/type resolution to rely on native built-in metadata.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.57.0...0.58.0

[0.57.0]

  • Replaced Xml.deserialize with Xml.queryValues for explicit value extraction from XML strings.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.56.0...0.57.0

[0.56.0]

  • Removed Xml.serialize from runtime externs; Xml.deserialize remains available.
  • Made String.replace, String.indexOf, String.substring, and String.split consistently pipeline-friendly by using data-last argument order.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.55.0...0.56.0

[0.55.0]

  • Escaped pretty-printed string values (including map string keys) so interpolated strings with embedded quotes render unambiguously in CLI/REPL output.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.54.2...0.55.0

[0.54.2]

  • Fixed release marketplace publish jobs to checkout the repository before running local publish scripts.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.54.1...0.54.2

[0.54.1]

  • Fixed NuGet packaging to include the custom package readme as README.md so PackageReadmeFile validation succeeds during pack/publish.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.54.0...0.54.1

[0.54.0]

  • Split VS Code Marketplace and Open VSX publishing into separate release jobs and added idempotent publish scripts so duplicate-version reruns succeed while real publish errors still fail.
  • Updated package/readme wording from immutable-first to immutable-by-design to reflect immutable-only semantics.
  • Switched NuGet package readme for MagnusOpera.FScript.Language and MagnusOpera.FScript.Runtime to a targeted NUGET.md with logo, overview, rationale, and license.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.53.0...0.54.0

[0.53.0]

  • Switched sandbox deny configuration to root-relative glob patterns (HostContext.DeniedPathGlobs), including support for .git and **/node_modules style blocking.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.52.0...0.53.0

[0.52.0]

  • Added Json.serialize and Xml.serialize externs for option-based JSON/XML serialization in runtime hosts.
  • Renamed XML decode extern from Xml.values to Xml.deserialize.
  • Replaced Fs.isFile and Fs.isDirectory with Fs.kind returning stdlib union FsKind (File/Directory/Missing) for direct pattern matching.
  • Added host-configurable sandbox exclusions (HostContext.ExcludedPaths) so Fs.glob/Fs.enumerateFiles hide blocked entries and Fs.readText/Fs.writeText/Fs.createDirectory fail immediately on blocked paths.
  • Added built-in String.* helpers: replace, indexOf, toLower, toUpper, substring, concat, and split.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.51.0...0.52.0

[0.51.0]

  • Added CLI extern configuration flags (--no-default-externs, repeatable --extern-assembly) with attribute-based provider discovery and conflict validation.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.50.0...0.51.0

[0.50.0]

  • Fixed parser handling for record fields whose value expression starts on a deeper indented line (for example Operations = followed by a multiline compact list literal).

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.49.0...0.50.0

[0.49.0]

  • Fixed if ... then ... else parsing when branches contain compact multiline list literals with nested record items.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.48.1...0.49.0

[0.48.1]

  • Made unsigned macOS release-asset cleanup best-effort so transient GitHub API failures no longer fail the release workflow.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.48.0...0.48.1

[0.48.0]

  • Switched VS Code extension changelog to a symlink of root CHANGELOG.md so Marketplace/Open VSX release notes use a single shared source.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.47.0...0.48.0

[0.47.0]

  • Publishing to tap requires only sign artifacts.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.46.0...0.47.0

[0.46.0]

  • Fixed lexer indentation handling for compact list layouts with multiple multiline record items so Terrabuild-style operation lists parse without inconsistent-indentation errors.
  • Enforced compact delimiter layout for non-empty {...} and [...] forms so opening/closing braces or brackets cannot appear on their own lines.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.45.0...0.46.0

[0.45.0]

  • Fixed parser/LSP false "Block cannot end with a let binding" errors for block-scoped let values that contain multiline expression continuations (for example list literals with multiline record items).

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.44.0...0.45.0

[0.44.0]

  • Added samples/quicksort.fss with a recursive quicksort example over integer lists.
  • Added let-function return type annotations (let f ... : Type = ...) with parser/type-inference support and updated annotation specifications.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.43.0...0.44.0

[0.43.0]

  • Switched LSP local go-to-definition to lexical AST binding resolution so local symbol usages (including record-field values and edge-of-token clicks) resolve to their exact nearest binder.
  • Added fscript.server.logLevel=debug support to surface detailed definition/references diagnostics and refined definition-follow-up references suppression so declaration clicks still show references while usage clicks navigate reliably.
  • Fixed local match-pattern declaration clicks (for example Some batch) to stop jumping to first usage and preserve references-window behavior.
  • Updated debug logging output to emit LSP window/logMessage entries when fscript.server.logLevel=debug, so logs are visible in editor output.
  • Fixed LSP definition on member-access field names (for example batch.ProjectPaths) to resolve via qualifier type inference (including match-pattern-bound locals).
  • Updated top-level function declaration clicks to preserve references-window behavior by keeping declaration entries in immediate follow-up reference results.
  • Fixed LSP reference indexing to include nameof <symbol> occurrences so top-level declaration clicks surface nameof usages in the references window.
  • Added an independent VS Code/LSP toggle for hover hints so it can be enabled or disabled without disabling the language server.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.42.0...0.43.0

[0.42.0]

  • Added LSP go-to-definition support for local and pattern-bound variable bindings so usages navigate to the nearest in-scope declaration (including function parameters and tuple let destructuring names).

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.41.0...0.42.0

[0.41.0]

  • Added Int/Float/Bool conversion helpers in stdlib-style builtins (*.tryParse and *.toString) for safe scalar parsing and string formatting.
  • Added tuple let destructuring (let (a, b) = ...) for top-level, block, and let-expression non-rec bindings.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.40.0...0.41.0

[0.40.0]

  • Fixed VS Code/LSP analysis to inject a default Env binding so scripts using Env no longer show unbound-variable diagnostics in the editor.
  • Fixed VS Code/LSP type navigation so Env and Environment resolve to the stdlib Environment type definition.
  • Added CLI script argument forwarding with -- and injected Env metadata (ScriptName, Arguments) for file, stdin, and REPL execution modes, with Environment now defined in stdlib for LSP/type visibility.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.39.0...0.40.0

[0.39.0]

  • Added VS Code REPL commands to open FScript REPL, send selected code to REPL, and execute the current script in REPL from the editor.
  • Updated VS Code REPL launch to default to auto, preferring local workspace CLI (dotnet run --project src/FScript) before falling back to fscript on PATH.
  • Fixed VS Code REPL script/selection sending to dedent multiline snippets and wrap non-let snippets in an inner let value block, avoiding premature line-by-line execution and indentation/parser errors for selected inner content while keeping atomic execution and persisting only pure single-let selections.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.38.3...0.39.0

[0.38.3]

  • Updated changelog gating and release preparation so release commits can leave ## [Unreleased] empty without placeholder bullets.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.38.2...0.38.3

[0.38.2]

  • Fixed release-prepare changelog rendering so the post-release initialization bullet stays under ## [Unreleased] instead of being appended to the released section.
  • Initialize post-0.38.1 unreleased section.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.38.1...0.38.2

[0.38.1]

  • Fixed release preparation to auto-seed ## [Unreleased] with a post-release initialization bullet so changelog CI checks continue to pass after tagging.
  • Initialize post-0.38.0 unreleased section.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.38.0...0.38.1

[0.38.0]

  • Restricted make release-prepare to stable versions only (major.minor.build) and removed -next support from release docs and validation.
  • Added REPL documentation under guides and architecture, and updated the getting-started tutorial to include a REPL check right after install.
  • Added make release-prepare to automate changelog versioning, compare link generation, release commit, and local tag creation.
  • Release tag workflow now populates draft release notes from the matching CHANGELOG.md version section and fails fast when it is missing or invalid.
  • Initialize post-0.37.0 unreleased section.
  • Added CLI stdin execution support so scripts can be piped to fscript (including -r/--root overrides).
  • Added fscript version command to print the current CLI version.
  • Added interactive CLI REPL mode when running fscript without arguments.
  • Updated REPL multiline submission to require double-Enter for pending blocks and improved function display with typed signatures.
  • Fixed block semantics to reject trailing let-only blocks without a final expression (for example let a = let f x = ...) and require an explicit return expression.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.37.0...0.38.0

[0.37.0]

  • Added resolver-backed import loading APIs (parseSourceWithIncludesResolver and ScriptHost.loadSourceWithIncludes) for hosts that load scripts from non-file sources.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.36.0...0.37.0

[0.36.0]

  • Fixed LSP go-to-definition for alias-qualified function calls (for example Helpers.append_part).

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.35.0...0.36.0

[0.35.0]

  • Fixed LSP completion insertion for dotted prefixes so selecting Option.map after Option. no longer duplicates the qualifier.
  • Switched import syntax to import "path.fss" as Alias and removed from import grammar.
  • Updated LSP type display/navigation to hide internal import prefixes and use source aliases (for example Common.ProjectInfo).
  • Renamed sample includes-and-exports.fss to imports-and-exports.fss and updated docs links.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.34.0...0.35.0

[0.34.0]

  • Removed F# sources from src/FScript.LanguageServer* by moving LSP semantic modules into FScript.CSharpInterop and keeping FScript.LanguageServer as C# host.
  • Replaced FScript.LanguageServer.Tests project with a C# test project and C# LSP test harness to remove F# compile cost from LanguageServer test builds.
  • Deleted obsolete F# LanguageServer test sources after C# test project migration.
  • Renamed FScript.CSharpInterop/LanguageServerLegacy to FScript.CSharpInterop/LanguageServer to reflect the new primary architecture.
  • CI now runs branch update builds on PR synchronize events while keeping ci-main scoped to main pushes to avoid duplicate runs.
  • Enabled F# preview parallel compilation globally, disabled deterministic builds, and removed global RuntimeIdentifiers to reduce CI build latency.
  • Added FScript.CSharpInterop as a stable bridge for parse/infer/runtime-extern/stdlib-source services and wired LanguageServer through it.
  • Added FScript.LanguageServer host executable as the migration entrypoint for C#-owned LSP startup.
  • Added a first native C# LSP server core (JSON-RPC transport, initialize/shutdown, text sync, and stdlib-source request) with dedicated integration tests.
  • Extended the native C# LSP core with diagnostics publishing and viewAst/viewInferredAst command handling.
  • Switched C# LSP host to full-method dispatch parity via shared handlers, made it the default test target, and updated extension/tag packaging to use FScript.LanguageServer.dll.
  • Replaced the F# LSP server executable with FScript.LanguageServer (C#) and moved F# LSP logic into FScript.LanguageServer.Core.
  • Fixed imported qualified type annotations (for example common.ProjectInfo) in parser/type inference to prevent false type mismatches.
  • Fixed LSP inlay hints to ignore spans from other files so included symbols no longer leak labels into unrelated declarations.
  • Enforced string-only map keys across type inference, evaluation, samples, and LSP type rendering (removed int|string key-domain displays).
  • Fixed map-pattern inlay hints to infer key/value/tail bindings (string, int, int map) instead of unknown.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.33.0...0.34.0

[0.33.0]

  • Updated runtime/test project package versions after NuGet publish verification.
  • Enforced strict changelog gates in CI (PR + main) and added make verify-changelog local preflight.
  • Optimized FScript.LanguageServer.Tests startup by building the language server once per run instead of once per test.
  • Reused a single LSP server process across FScript.LanguageServer.Tests and added per-test document cleanup for isolation, reducing suite runtime substantially.
  • Removed clean from publish-all to avoid redundant CI cleanup, restored one LSP process per test for stronger isolation (while keeping build-once), and explicitly disabled AOT for LanguageServer publish.
  • Split FScript.LanguageServer.Tests into feature-oriented files with shared wire/client/fixture helpers to reduce CI compile bottlenecks from the previous monolithic test file.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.32.0...0.33.0

[0.32.0]

  • Replaced #include with import and removed script-level module declarations.
  • Imported files are now exposed through filename-derived modules (for example shared.fss -> shared.*).
  • Updated parser/runtime/LSP/docs/tests for the new import/module semantics.
  • Removed unused top-level binding diagnostics from LSP.
  • Clarified AGENTS.md so every direct commit to main must include an Unreleased changelog entry, including docs/process/policy updates.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.31.0...0.32.0

[0.31.0]

  • Enforced warning-as-error globally via Directory.Build.props (TreatWarningsAsErrors=true).
  • Fixed LSP compiler warnings (exhaustive SInclude matches and null-safe stdlib resource stream handling).

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.30.0...0.31.0

[0.30.0]

  • Added contributor policy in AGENTS.md for build/test/non-regression workflow.
  • Added CI changelog gate requiring one-line ## [Unreleased] entries for functional PR changes.
  • Reorganized documentation into docs/specs, docs/architecture, and curated root docs/ guides.
  • Added docs indexes (docs/README.md, docs/specs/README.md, docs/architecture/README.md) and linked README/tutorial to the new structure.
  • Added docs/specs/lsp-inlay-hints.md and mandated specification maintenance in AGENTS.md.
  • LSP now injects runtime extern schemes for document typing, enabling host functions (Fs.*, Regex.*, etc.) and showing injected signatures in hover/completion/signature help.
  • LSP definition/type-definition navigation now targets included declaration files (URI derived from symbol source span) instead of always the current file.
  • LSP now resolves record field labels inside function return record literals to the function’s declared/inferred return type (including include-provided type definitions).
  • Suppressed misleading top-level unused diagnostics for underscore helper/include files (for example _helpers.fss).
  • LSP hover/signature for injected stdlib functions now shows named arguments (for example Option.map mapper/value labels).
  • LSP definition on injected stdlib functions now opens readonly virtual stdlib sources (fscript-stdlib:///Option.fss, List.fss, Map.fss).

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.29.0...0.30.0

[0.29.0]

  • 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.

[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.

[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.

[0.23.1]

Published: 2026-02-12

  • 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: https://github.com/MagnusOpera/FScript/compare/0.23.0...0.23.1

[0.23.0]

Draft

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.22.0...0.23.0

[0.22.0]

Published: 2026-02-11

  • 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: https://github.com/MagnusOpera/FScript/compare/0.21.0...0.22.0

[0.20.0]

Published: 2026-02-11

  • 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: https://github.com/MagnusOpera/FScript/compare/0.19.0...0.20.0

[0.19.0]

Published: 2026-02-11

  • 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: https://github.com/MagnusOpera/FScript/compare/0.18.0...0.19.0

[0.18.0]

Published: 2026-02-11

  • 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: https://github.com/MagnusOpera/FScript/compare/0.17.0...0.18.0

[0.17.0]

Published: 2026-02-11

  • 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: https://github.com/MagnusOpera/FScript/compare/0.16.0...0.17.0

[0.16.0]

Published: 2026-02-10

  • 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: https://github.com/MagnusOpera/FScript/compare/0.15.2...0.16.0

[0.15.2]

Published: 2026-02-10

  • Update README.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.15.1...0.15.2

[0.15.0]

Published: 2026-02-10

  • Added NuGet package icon metadata for MagnusOpera.FScript.Language and MagnusOpera.FScript.Runtime.
  • Updated README.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.14.0...0.15.0

[0.14.0]

Published: 2026-02-10

  • 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: https://github.com/MagnusOpera/FScript/compare/0.13.0...0.14.0

[0.13.0]

Published: 2026-02-09

  • Added support for multiline lambda bodies inside parenthesized call chains, including pipeline continuation after ).
  • Added parser tests for multiline lambda/pipeline behavior.
  • Added support for aligned multiline let parameter declarations with strict column alignment.
  • Tightened indentation/layout rules for multiline literals and inline record annotation shapes.
  • Updated syntax-and-indentation.md with the new accepted layouts and multiline lambda examples.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.12.0...0.13.0

[0.12.0]

Published: 2026-02-09

  • Added newline-separated multiline layouts for map, record, list literals, record updates, and inline record type annotations.
  • Kept semicolon-separated syntax fully compatible.
  • Added parser tests and a new samples/layout-styles.fss.
  • Updated syntax docs and showcase examples.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.10.0...0.12.0

[0.10.0]

Published: 2026-02-08

  • Added List.empty (arity-0 value, like Map.empty).
  • Added Map.map (maps values only) and Map.iter.
  • Registered new externs in runtime registry.
  • Added tests for new extern behavior and registry exposure.
  • Updated docs for extern catalog and map/list value semantics.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.9.0...0.10.0

[0.11.0]

Published: 2026-02-08

  • Fix fscript macOS binary identifier

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.9.0...0.11.0

[0.9.0]

Published: 2026-02-08

  • Unified map literals with brace syntax.
  • Added key-expression support in map literals.
  • Completed parser/tests/docs updates for the new map syntax.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.8.0...0.9.0

[0.8.0]

Published: 2026-02-08

  • Fixed inference for unannotated record field access in Option.map lambdas.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.7.0...0.8.0

[0.7.0]

Published: 2026-02-08

  • Targeted FScript.Language and FScript.Runtime to netstandard2.1.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.6.0...0.7.0

[0.6.0]

Draft

  • Added non-empty list pattern support.
  • Improved multiline lambda application robustness.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.5.0...0.6.0

[0.5.0]

Published: 2026-02-08

  • Enforced explicit tuple syntax in match cases.
  • Added multi-parameter lambda syntax support.
  • Improved host integration:
    • exposed exported function signatures,
    • accepted host record maps in map externs.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.4.0...0.5.0

[0.4.0]

Published: 2026-02-08

  • Added native map literal syntax #{ ... }.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.3.0...0.4.0

[0.3.0]

Draft

  • Treated arity-0 externs and exports as values (not callable functions).

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.2.0...0.3.0

[0.2.0]

Published: 2026-02-08

  • Added script host invocation API.
  • Added top-level export let metadata and restricted host visibility to exported bindings.
  • Refactored higher-order externs to callback-based runtime handlers.
  • Added nameof.
  • Added Map.ofList, multiline argument support, and extended map APIs (count/filter/fold/choose + try-get rename work).
  • Added root-confined filesystem write externs.
  • Added smoke-tests and updated export/host documentation.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.1.4...0.2.0

[0.1.4]

Published: 2026-02-07

  • Updated entitlements.
  • Added embedding documentation.
  • Added distribution setup for NuGet and Homebrew.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.1.3...0.1.4

[0.1.3]

Published: 2026-02-07

  • Fixed token issue affecting tap publishing.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.1.2-next...0.1.3

[0.1.3-next]

Pre-release Published: 2026-02-07

  • No code changes vs 0.1.3 (tag points to same commit).

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.1.2-next...0.1.3-next

[0.1.2-next]

Pre-release Published: 2026-02-07

  • Fixed Homebrew tap publishing.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.1.1-next...0.1.2-next

[0.1.1-next]

Pre-release Published: 2026-02-07

  • Fixed missing entitlement in macOS signing/publish flow.
  • Ensured signed macOS artifacts can be produced correctly in CI.

Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.1.0-next...0.1.1-next

[0.1.0-next]

Pre-release Published: 2026-02-07

  • Added publishing/distribution groundwork.
  • Introduced CLI parsing updates and root-directory behavior.
  • Renamed projects and improved docs.
  • Added macOS signing/versioning alignment and fixed build warnings.
  • Switched license to MIT.

Full Changelog: https://github.com/MagnusOpera/FScript/commits/0.1.0-next