All notable changes to FScript are documented in this file.
- 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
- 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
- Added optional list index access with
list[index]plus theList.tryItemstdlib helper. - Expanded stdlib docs with built-in
Envcoverage, 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
- Documented the CLI-injected
Envvalue and stdlibEnvironment/FsKindtypes, and filled missing stdlib reference entries such asString.endsWith.
Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.62.0...0.63.0
- Packaged the
fscriptCLI as theMagnusOpera.FScript.NET tool, added it tomake pack-nuget, and documented .NET tool installation and update flows.
Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.61.0...0.62.0
- Fixed JSON and XML record deserialization to treat missing optional fields as
Noneinstead 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
- 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
- Added a new
MagnusOpera.FScript.TypeProviderpackage 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
dotnetprocess 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
- Removed the obsolete
Stdlibshim 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
- Added
String.endsWithto 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
ScriptHostexported symbol access by caching function/value sets and maps for fasterinvokeandgetValue. - Moved stdlib
List.*,Option.*,Map.*,Environment, andFsKinddefinitions 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
- Replaced
Xml.deserializewithXml.queryValuesfor explicit value extraction from XML strings.
Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.56.0...0.57.0
- Removed
Xml.serializefrom runtime externs;Xml.deserializeremains available. - Made
String.replace,String.indexOf,String.substring, andString.splitconsistently pipeline-friendly by using data-last argument order.
Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.55.0...0.56.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
- 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
- Fixed NuGet packaging to include the custom package readme as
README.mdsoPackageReadmeFilevalidation succeeds during pack/publish.
Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.54.0...0.54.1
- 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-firsttoimmutable-by-designto reflect immutable-only semantics. - Switched NuGet package readme for
MagnusOpera.FScript.LanguageandMagnusOpera.FScript.Runtimeto a targetedNUGET.mdwith logo, overview, rationale, and license.
Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.53.0...0.54.0
- Switched sandbox deny configuration to root-relative glob patterns (
HostContext.DeniedPathGlobs), including support for.gitand**/node_modulesstyle blocking.
Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.52.0...0.53.0
- Added
Json.serializeandXml.serializeexterns for option-based JSON/XML serialization in runtime hosts. - Renamed XML decode extern from
Xml.valuestoXml.deserialize. - Replaced
Fs.isFileandFs.isDirectorywithFs.kindreturning stdlib unionFsKind(File/Directory/Missing) for direct pattern matching. - Added host-configurable sandbox exclusions (
HostContext.ExcludedPaths) soFs.glob/Fs.enumerateFileshide blocked entries andFs.readText/Fs.writeText/Fs.createDirectoryfail immediately on blocked paths. - Added built-in
String.*helpers:replace,indexOf,toLower,toUpper,substring,concat, andsplit.
Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.51.0...0.52.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
- 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
- Fixed
if ... then ... elseparsing 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
- 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
- Switched VS Code extension changelog to a symlink of root
CHANGELOG.mdso Marketplace/Open VSX release notes use a single shared source.
Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.47.0...0.48.0
- Publishing to tap requires only sign artifacts.
Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.46.0...0.47.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
- Fixed parser/LSP false "Block cannot end with a let binding" errors for block-scoped
letvalues 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
- Added
samples/quicksort.fsswith 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
- 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=debugsupport 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/logMessageentries whenfscript.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 surfacenameofusages 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
- 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
letdestructuring names).
Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.41.0...0.42.0
- Added
Int/Float/Boolconversion helpers in stdlib-style builtins (*.tryParseand*.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
- Fixed VS Code/LSP analysis to inject a default
Envbinding so scripts usingEnvno longer show unbound-variable diagnostics in the editor. - Fixed VS Code/LSP type navigation so
EnvandEnvironmentresolve to the stdlibEnvironmenttype definition. - Added CLI script argument forwarding with
--and injectedEnvmetadata (ScriptName,Arguments) for file, stdin, and REPL execution modes, withEnvironmentnow defined in stdlib for LSP/type visibility.
Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.39.0...0.40.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 tofscripton PATH. - Fixed VS Code REPL script/selection sending to dedent multiline snippets and wrap non-
letsnippets in an innerletvalue block, avoiding premature line-by-line execution and indentation/parser errors for selected inner content while keeping atomic execution and persisting only pure single-letselections.
Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.38.3...0.39.0
- 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
- Fixed
release-preparechangelog 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
- 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
- Restricted
make release-prepareto stable versions only (major.minor.build) and removed-nextsupport 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-prepareto automate changelog versioning, compare link generation, release commit, and local tag creation. - Release tag workflow now populates draft release notes from the matching
CHANGELOG.mdversion 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/--rootoverrides). - Added
fscript versioncommand to print the current CLI version. - Added interactive CLI REPL mode when running
fscriptwithout 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 examplelet a = let f x = ...) and require an explicit return expression.
Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.37.0...0.38.0
- Added resolver-backed import loading APIs (
parseSourceWithIncludesResolverandScriptHost.loadSourceWithIncludes) for hosts that load scripts from non-file sources.
Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.36.0...0.37.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
- Fixed LSP completion insertion for dotted prefixes so selecting
Option.mapafterOption.no longer duplicates the qualifier. - Switched import syntax to
import "path.fss" as Aliasand removedfromimport grammar. - Updated LSP type display/navigation to hide internal import prefixes and use source aliases (for example
Common.ProjectInfo). - Renamed sample
includes-and-exports.fsstoimports-and-exports.fssand updated docs links.
Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.34.0...0.35.0
- Removed F# sources from
src/FScript.LanguageServer*by moving LSP semantic modules intoFScript.CSharpInteropand keepingFScript.LanguageServeras C# host. - Replaced
FScript.LanguageServer.Testsproject 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/LanguageServerLegacytoFScript.CSharpInterop/LanguageServerto reflect the new primary architecture. - CI now runs branch update builds on PR
synchronizeevents while keepingci-mainscoped tomainpushes to avoid duplicate runs. - Enabled F# preview parallel compilation globally, disabled deterministic builds, and removed global RuntimeIdentifiers to reduce CI build latency.
- Added
FScript.CSharpInteropas a stable bridge for parse/infer/runtime-extern/stdlib-source services and wired LanguageServer through it. - Added
FScript.LanguageServerhost 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/viewInferredAstcommand 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 intoFScript.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|stringkey-domain displays). - Fixed map-pattern inlay hints to infer key/value/tail bindings (
string,int,int map) instead ofunknown.
Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.33.0...0.34.0
- Updated runtime/test project package versions after NuGet publish verification.
- Enforced strict changelog gates in CI (PR + main) and added
make verify-changeloglocal preflight. - Optimized
FScript.LanguageServer.Testsstartup by building the language server once per run instead of once per test. - Reused a single LSP server process across
FScript.LanguageServer.Testsand added per-test document cleanup for isolation, reducing suite runtime substantially. - Removed
cleanfrompublish-allto 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.Testsinto 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
- Replaced
#includewithimportand removed script-levelmoduledeclarations. - 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
unusedtop-level binding diagnostics from LSP. - Clarified
AGENTS.mdso every direct commit tomainmust include anUnreleasedchangelog entry, including docs/process/policy updates.
Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.31.0...0.32.0
- Enforced warning-as-error globally via
Directory.Build.props(TreatWarningsAsErrors=true). - Fixed LSP compiler warnings (exhaustive
SIncludematches and null-safe stdlib resource stream handling).
Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.30.0...0.31.0
- Added contributor policy in
AGENTS.mdfor 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 rootdocs/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.mdand mandated specification maintenance inAGENTS.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
unuseddiagnostics for underscore helper/include files (for example_helpers.fss). - LSP hover/signature for injected stdlib functions now shows named arguments (for example
Option.mapmapper/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
- 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.
- Added local variable type hover in LSP.
- Added local variable type capture in type inference.
- Added VS Code extension auto-compile for development startup.
- 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.
- 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).
- Fix nullness warnings.
- Implemented analysis state.
- 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.
- 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.
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
Draft
Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.22.0...0.23.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
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
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
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
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
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
Published: 2026-02-10
- Update README.
Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.15.1...0.15.2
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
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
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
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
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
Published: 2026-02-08
- Fix fscript macOS binary identifier
Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.9.0...0.11.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
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
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
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
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
Published: 2026-02-08
- Added native map literal syntax #{ ... }.
Full Changelog: https://github.com/MagnusOpera/FScript/compare/0.3.0...0.4.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
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
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
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
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
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
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
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