Skip to content

Publish the inference report to gh-pages

Choose a tag to compare

@rultor rultor released this 27 Aug 15:04
· 2024 commits to master since this release

Language

  • Receiver is now an explicit void named ^: [^ x] > lt, ? > ^, and :^ argument binding
  • New I glyph — the identity object, one-character spelling of x > [x]
  • Removed the % self-reference token, superseded by >> file-local handles
  • T terminator now takes arguments and a method chain (T "why it failed", T.foo)
  • $ accepted as the head of a reversed dispatch
  • Compact tuple *N after a reversed dispatch (name. *1) dropped
  • Trailing whitespace on any line, text blocks included, is now a parse error
  • Missing ] on a formation head reported as its own error
  • Duplicate attribute names in one formation rejected
  • Meta directive names, void names and >> handles validated against the NAME grammar
  • Metas must sit at indent 0; root identifiers must be followed by a dot (QQ.io.stdout rejected)
  • New parse validators: aliases, attribute names, object presence
  • Parser error recovery: Savepoint/Rollback/Recovery keep parsing past a broken line
  • cti and move-voids-up stages removed

Compiler and Maven plugin

  • New eo-inference module and eo:inference goal — resolves, per object, which formation it was copied from
  • New eo:merge goal — package members merged into the object they belong to (string/upper.eo into string)
  • New eo:coverage-report goal — LCOV report, eo.minCoverage threshold, wired into verify
  • purify.xsl marks safe-to-cache formations @pure; PhSticky memoizes their dataization
  • Maven proxy support: protocol, credentials and nonProxyHosts honoured
  • Cache keys now fold in parse XSL fingerprints, lints/wpa versions, trackSteps, inference tables and analysed XMIR
  • GlobalCache extracted from Parsing; OyCached.contains() memoized
  • ChPattern and CommitHashesMap deleted
  • Printer penalty weights configurable (eo.penaltyIndent, eo.penaltyBracket, eo.penaltyExcess, eo.width)
  • Printer split into Node, Style, Vertical, Horizontal, Phi, Starred, Arguments; alias restoration added
  • Coverage manifest no longer counts atoms, voids, root objects or throwing tests

Runtime

  • printf and scanf reimplemented in pure EO; Java EOprintf/PrintfArgs removed
  • New objects: file.deleted, file.moved, file.size, file.touched, directory.listed
  • New string objects: upper, lower, english, turkish, padded-left, padded-right, padded-zeros, truncated
  • as-char, as-decimal, as-fixed, as-scientific moved from string to number; as-hex to bytes
  • tuple.with removed
  • Posix/Win32 packages renamed to posix/win32; EO_string package folded into EOstring$...
  • New syscalls: stat, symlink, inet_addr, strerror, gettimeofday, WSAStartup, 64-bit _ftime64_s
  • Pointer-width Winsock socket descriptors instead of a fixed Java long
  • UTF-8 validation in string.slice and string.length; buffer-length checks before native write/send
  • Partial writes retried in file.open, socket.as-output and directory.tmpfile
  • PhDefault and CopiedAttrs use ReentrantLock instead of synchronized
  • PhNest and OnClasspath removed

Build

  • qulice 0.31.2, lints 0.4.8, jcabi-parent 0.73.4, cactoos 0.60+, groovy 5.1.1
  • Smells threshold enforced exactly in CI
  • benchmark, integration, jmh-benchmark-action and suppressions workflows removed
  • README benchmark section dropped