Skip to content

v0.11.0

Choose a tag to compare

@github-actions github-actions released this 23 Sep 07:06
· 452 commits to main since this release
Immutable release. Only release title and notes can be modified.
3943258
docker run --rm -v "$PWD":/work -u "$(id -u):$(id -g)" \
    ghcr.io/manticorephp/compiler:0.11.0 manticore compile app.php -o app

curl -fsSL https://github.com/manticorephp/compiler/releases/download/v0.11.0/install.sh | sh

The tarballs carry the compiler and its stdlib, not a toolchain: manticore
assembles its IR with clang and links with cc, against the host's
pcre2, openssl, sqlite3 and curl. install.sh checks for those and says
which are missing. The image carries the toolchain it was built with.

Built cold from v0.11.0 — no cached compiler took part.

Changes (127 commits, since v0.10.0)

  • one base, and the release self-hosts
  • the dry run reaches the notes, which is the only part of a release nobody has ever executed
  • the cached compiler is validated by running it, not by matching an id
  • the published compiler is a seed source, so CI stops cold-seeding
  • libxml2-dev is declared, not inherited
  • clang comes from Debian's own archive, and apt.llvm.org leaves the image entirely
  • CI
  • proc_open() actually spawns
  • supervise() puts a crashed worker back on a backoff, and the prefork shutdown test stops asking the clock
  • an arrow fn with a yield IS a generator, and MAX_FILE_SIZE matches case-insensitively
  • unset() on a name bound to storage the CALL does not own breaks the BINDING, not the storage
  • isset() asks whether a variable EXISTS, not whether it is truthy
  • the timer heap drops its dead slots
  • a cell-typed conditional argument is released like any other owned temp
  • http_workers scans a port range nobody else touches
  • tools/docker
  • a __get with a CONCRETE declared return hands its raw value back
  • a top-level return in the ENTRY script ends it, bare or valued
  • a failed write to stdout ends the program, as php's CLI does
  • AGENTS.md
  • docs/http.md
  • analyze
  • http
  • http
  • http
  • http: Response:
  • stdlib
  • http
  • TypeCheck is on by default — the value-channel epic's last exit criterion. Two of its own rules had kept it ga…
  • a shape-typed ENUM field decodes to its ORDINAL
  • a by-ref argument can name a module cell
  • a module cell co-owns the closure it holds
  • bin/build
  • cellguard baseline
  • bin/build exports MANTICORE_CELLGUARD=strict by default — the compiler and the stdlib build under the cell ver…
  • (object) of a run-time-classified value dispatches by tag — an object is itself (retained), anything else a fr…
  • tests
  • EmitLlvm
  • A mixed / unhinted property is ONE storage with ONE repr
  • cellguard
  • cellguard
  • InferTypes
  • emit
  • docs
  • shapes: the TypeError spells the shape and the field as php does (Type::phpString — `array{0: Node, 1
  • docs
  • shapes
  • shapes
  • runtime
  • http
  • async
  • monomorphize
  • emit
  • docs
  • docs
  • typecheck
  • emit
  • typecheck
  • analyze: DocType:
  • emit
  • infer
  • emit
  • emit
  • infer
  • emit: the property-borrow scan vetoed `Task:
  • emit
  • emit
  • infer: a constant-key read off a shape is typed with the field; ArrayAccess_:
  • mir
  • mir
  • emit
  • lower
  • mir
  • tools
  • emit
  • runtime
  • verify
  • emit
  • docs
  • abi: props_fn offset is MemoryAbi:
  • … and 47 more, see the full log

Full log: v0.10.0...v0.11.0