FunctionalScriptCLIPRsReleasesPlaygroundGitHub ↗

root / changelog / 0.53.0

← Previous: 0.52.0 · Next: 0.54.0 →
  • BREAKING CHANGES: fjs: every module the compiler accepts is .f.js, and its old .f.mjs path is gone from the package — fjs/ci/config, fjs/js/prototype, fjs/nanvm/constructors, fjs/types/btree/types, fjs/types/range, the compiler examples and the DataJS conformance sets spec/datajs/vectors/*/data.f.js. (#2376)
  • BREAKING CHANGES: compiler/tokenizer: DjsToken no longer has the ws, nl, // and /* kinds and tokenize no longer emits them; trivia is token metadata, and DjsTokenWithMetadata gains a required newline, so a token stream built by hand for parseFromTokens must set it. (#2368, #2370)
  • BREAKING CHANGES: compiler/parser: the syntax-tree types move to fjs/compiler/parser/syntax/types.ts, and mappings and the reader parseSyntax are exported from fjs/compiler/parser/syntax/module.f.mjs; Import and Const carry start and semicolon, a block's return and a module's exported are ValueStatement records carrying first, and ParameterList has a third form, { arrow }. In fjs/compiler/parser/grammar, the rule shapes lose their trivia slots, trivia and sameLine are no longer exported, exportStatement / ExportStatement are replaced by lastStatement / LastStatement, and Block ends in the new Terminator rule. (#2368, #2370, #2396)
  • BREAKING CHANGES: edag: the EDAG gains the op1 node kind throw (Op1Id), which every consumer that dispatches on node kinds must handle. (#2396)
  • BREAKING CHANGES: compiler: compile takes NodeProgramOptions rather than the argument list. (#2375)
  • BREAKING CHANGES: website/page: pageTitle returns the title string rather than a ['title', …] element; new exports shell, testsMain, pagePath and changelogDir. (#2372)
  • BREAKING CHANGES: ci: packageCheckJob is a function of the packed package's consumer, PackageConsumer | undefined, rather than a Job; Setup gains an optional packageConsumer, and the built-in fjs ci passes none. (#2378)
  • BREAKING CHANGES: ci: fjs ci writes .github/workflows/gen.ci.yml and .github/workflows/gen.npm-publish.yml instead of ci.yml and npm-publish.yml. A project regenerating with this version deletes its old ci.yml and npm-publish.yml by hand, which the generator does not remove and which GitHub would otherwise run beside their replacements, and a project that publishes updates its npm trusted publisher's workflow filename to gen.npm-publish.yml in the same sitting. (#2397)
  • compiler: throw value; is accepted in a function's block body and at module level, written in every output, and refused in the value outputs by the value thrown. (#2396)
  • compiler/parser: a statement's ; may be omitted where JavaScript's automatic semicolon insertion supplies one — at the end of input, before }, and before a statement on a new line. (#2368)
  • compiler: fjs compile with no arguments checks every .f.js under the current directory instead of failing. (#2375)
  • effects/node/virtual: an open handle follows the file it was opened on — a write through the name reaches it, where a rename over the name still does not — and State.handles's element gains a name. (#2363)
  • media/html: new module.mjs exporting toDom and fill, which build an Element into a DOM as written: SVG and MathML elements and their namespaced attributes get the namespaces the HTML parser would give them, a template fills its content, content follows the serializer's rules, and a script element is refused. module.f.mjs exports the shared helpers parseElement, isVoidTag, isRawText and rawTextContent. (#2374)
  • website/demo: textDemo, the one "textarea in, view out" demo the JSON, Markdown, DataJS, EDAG and changelog demos are built on, and graphOf, the one value-to-graph walk the DataJS and EDAG demos share. (#2373, #2383)
  • website: one page shell and one page layout; buttons drawn with the site's own frame, so they look alike in Safari and Chrome; typing quickly into a demo no longer loses keystrokes to a stale render. (#2372, #2380, #2381)
Support FunctionalScript: GitHub Sponsors ↗ · Open Collective ↗ · Patreon ↗