Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 52 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,58 @@ patterns work unchanged.
async functions. Replaces the parallel `:async_function` tag
that would have required N parallel pattern-match clauses.

## [0.2.0](https://github.com/ivarvong/pyex/compare/v0.1.0...v0.2.0) (2026-06-30)


### Features

* add library-conformance test category, fix pydantic shim drift it surfaced ([#67](https://github.com/ivarvong/pyex/issues/67)) ([6623a04](https://github.com/ivarvong/pyex/commit/6623a041c6ceeaf5cd2d1d32bd824b3de3f60065))
* **api:** carry the capability ledger + footprint on a failed run's error ([#136](https://github.com/ivarvong/pyex/issues/136)) ([af4c078](https://github.com/ivarvong/pyex/commit/af4c0781de0284678745da840e82fbd74664eb95))
* async/await as cooperative coroutines (Phase 1) + lazy itertools.islice ([#58](https://github.com/ivarvong/pyex/issues/58)) ([41509e6](https://github.com/ivarvong/pyex/commit/41509e66fce59a27b7d4e2450a870c0e5b51ee0c))
* **boto3:** DynamoDB transactions, conditions, Query — run a real ledger ([#133](https://github.com/ivarvong/pyex/issues/133)) ([7742fc8](https://github.com/ivarvong/pyex/commit/7742fc88a6576a29d54bcb1860a1a96c0deaa786))
* capstone expense-tracker API + run [@field](https://github.com/field)_validator on request bodies ([#115](https://github.com/ivarvong/pyex/issues/115)) ([e5f4601](https://github.com/ivarvong/pyex/commit/e5f46014aeb7034eaf3c8c58961ae38846651ed0))
* cooperative scheduling — close the four CPython divergences ([#59](https://github.com/ivarvong/pyex/issues/59)) ([1c324f9](https://github.com/ivarvong/pyex/commit/1c324f98a9063f522da9006b68f1fa46ce352f32))
* **determinism:** clock + entropy capability (seed:/clock:) + no cross-turn :rand leak ([#125](https://github.com/ivarvong/pyex/issues/125)) ([175de47](https://github.com/ivarvong/pyex/commit/175de47e56dc8371bb73c6441426b2605499cc3c))
* **limits:** enable safe-by-default resource ceilings ([#71](https://github.com/ivarvong/pyex/issues/71)) ([95b4799](https://github.com/ivarvong/pyex/commit/95b4799dce469a9f3d64ac27f4bc4afbab4f19a4))
* **otel:** app/runtime channel rename + OTel semconv + scope + ASCII trace renderer ([#122](https://github.com/ivarvong/pyex/issues/122)) ([1523e4d](https://github.com/ivarvong/pyex/commit/1523e4d60e5b6d5d1553f43027a42ac162a6db84))
* **otel:** two-channel telemetry — tenant opentelemetry module + tamper-proof platform capability trace ([#121](https://github.com/ivarvong/pyex/issues/121)) ([23d5e6d](https://github.com/ivarvong/pyex/commit/23d5e6d913e30873b0d1429036be277abf9f48a6))
* **parser:** parenthesized import lists + __future__ no-op imports ([#132](https://github.com/ivarvong/pyex/issues/132)) ([c1b9276](https://github.com/ivarvong/pyex/commit/c1b92769b0b1a7a0368a404eda61669bcd0e5f07))
* **stdlib:** add ast, inspect, logging, traceback shims ([#114](https://github.com/ivarvong/pyex/issues/114)) ([5508ebb](https://github.com/ivarvong/pyex/commit/5508ebbdac744d85c371fa2923c44443a52e53c7))
* **storage:** attenuating membranes for multitenant capabilities ([#117](https://github.com/ivarvong/pyex/issues/117)) ([db28b65](https://github.com/ivarvong/pyex/commit/db28b652c256a7d9812502154adb6fdc12cf0ccb))
* **storage:** experimental host-provided KV store capability ([#116](https://github.com/ivarvong/pyex/issues/116)) ([32233f8](https://github.com/ivarvong/pyex/commit/32233f82b315e89dc35fba1129094a55429c1b7c))
* **str:** complete the str method surface (burn down parity gaps) ([#92](https://github.com/ivarvong/pyex/issues/92)) ([4baf89b](https://github.com/ivarvong/pyex/commit/4baf89b9612ffd3a0a5339162c60383021085b55))
* **turn:** prove the turn-purity contract + per-turn telemetry footprint ([#118](https://github.com/ivarvong/pyex/issues/118)) ([0903f46](https://github.com/ivarvong/pyex/commit/0903f468e75cb7d1afe718055dbe1c06e653b6d6))


### Bug Fixes

* **banned_call_tracer:** invert :erlang to allowlist + catch fun captures ([#76](https://github.com/ivarvong/pyex/issues/76)) ([ace95fd](https://github.com/ivarvong/pyex/commit/ace95fdbf8f6dc78e58b91d52e8e65974eccbaf3))
* **banned_call_tracer:** treat missing abstract code as a violation ([#75](https://github.com/ivarvong/pyex/issues/75)) ([ddb5569](https://github.com/ivarvong/pyex/commit/ddb55695e279efe7d3c3fce3c75150862d378b8b))
* close common gaps that bite LLM-generated Python ([#88](https://github.com/ivarvong/pyex/issues/88)) ([6587c68](https://github.com/ivarvong/pyex/commit/6587c683e344e98e86e39673b955780a872d7d8d))
* **core:** startswith/endswith indices, no-arg dir(), str.join over str, sum TypeError ([#119](https://github.com/ivarvong/pyex/issues/119)) ([010e2ce](https://github.com/ivarvong/pyex/commit/010e2ce7125da003656e0ec9f53bd51b4e67454d))
* **ctx:** match network allowlist component-wise, not by string prefix ([#72](https://github.com/ivarvong/pyex/issues/72)) ([b64ddc3](https://github.com/ivarvong/pyex/commit/b64ddc33fca06d348ca2029d58b77a450b1329c8))
* **decimal:** regression tests + informative builtin clause errors ([#77](https://github.com/ivarvong/pyex/issues/77)) ([754a34a](https://github.com/ivarvong/pyex/commit/754a34af24e844ea61ff6d2127b2f0a42481cc93))
* **generators:** send(None) priming + StopIteration.value ([#120](https://github.com/ivarvong/pyex/issues/120)) ([d2b2b9b](https://github.com/ivarvong/pyex/commit/d2b2b9b6b39969a684f901bd0d5bb70ccbd5df7b))
* **generators:** yield from delegates the sub-generator's return value (PEP 380) ([#127](https://github.com/ivarvong/pyex/issues/127)) ([720fa5b](https://github.com/ivarvong/pyex/commit/720fa5bb5e418dec2cfcd3d3632af312ea70f8ff))
* **json:** preserve object key order on loads + reject sets in dumps ([#124](https://github.com/ivarvong/pyex/issues/124)) ([73c61f0](https://github.com/ivarvong/pyex/commit/73c61f093288a9d33d426b1583d026604ab7ee25))
* **lexer:** complete the bytes-literal prefix matrix + repr quoting ([#85](https://github.com/ivarvong/pyex/issues/85)) ([048263b](https://github.com/ivarvong/pyex/commit/048263bd4261ce9fec37a0ab7fd1bbcc67245c66))
* **lexer:** complete the Python string-prefix matrix (rf/fr, R/F, u/U, raw triples) ([#81](https://github.com/ivarvong/pyex/issues/81)) ([6b3b405](https://github.com/ivarvong/pyex/commit/6b3b4056f299984b18b0e94162b34eec96d8e4a2))
* **otel:** audit a failed turn + semconv error.type + telemetry key; exhaustive invariants ([#123](https://github.com/ivarvong/pyex/issues/123)) ([fac3c63](https://github.com/ivarvong/pyex/commit/fac3c6357ef0236d21d595a59636c4f92c512057))
* **parser:** accept paren tuple targets in comprehension for-clauses ([#68](https://github.com/ivarvong/pyex/issues/68)) ([ebde436](https://github.com/ivarvong/pyex/commit/ebde4364b04ee11b2ecaa0aa4bd97be74b3db11e))
* **pyex:** snapshot and restore caller's Decimal context across run/2 ([#74](https://github.com/ivarvong/pyex/issues/74)) ([ec0dfc4](https://github.com/ivarvong/pyex/commit/ec0dfc4235ed31845a0890adcb7e9b21a40157d7))
* **requests:** apply a host default receive_timeout when caller omits timeout= ([#73](https://github.com/ivarvong/pyex/issues/73)) ([b924a63](https://github.com/ivarvong/pyex/commit/b924a634f479718ca439089eceac7ec7f612fbdb))
* route iterable-consuming builtins through the one coercion ([#96](https://github.com/ivarvong/pyex/issues/96)) ([2e72580](https://github.com/ivarvong/pyex/commit/2e725803febd35b1a91906532d2e818c62436221))
* sorted/list/reversed/tuple shallow-copy their elements ([#93](https://github.com/ivarvong/pyex/issues/93)) ([9fa45b8](https://github.com/ivarvong/pyex/commit/9fa45b86005f5d7997bbeea508e776f29a9f23e1))
* **telemetry:** count spans toward the memory budget (close DoS sink) ([#126](https://github.com/ivarvong/pyex/issues/126)) ([9b03d8d](https://github.com/ivarvong/pyex/commit/9b03d8dc48c5d1ca2bcc914bae7c0ab7bdc23905))
* thread yielded signals through assign + return ([#61](https://github.com/ivarvong/pyex/issues/61)) ([b2964f5](https://github.com/ivarvong/pyex/commit/b2964f5483281484e50db9f124e23ffff2da61c2))
* type-constructor conformance via the product-space sweep ([#98](https://github.com/ivarvong/pyex/issues/98)) ([f7c1472](https://github.com/ivarvong/pyex/commit/f7c1472f952cc123025483d37a907265bdf916fb))


### Performance Improvements

* default-limits short-circuit, list-index cache, scope resolution ([#69](https://github.com/ivarvong/pyex/issues/69)) ([07b0850](https://github.com/ivarvong/pyex/commit/07b08508833f918da80ce36a51eb8df293a138fb))
* fix O(n²) list.append, dict insert, zipfile.writestr, and deque.append ([#55](https://github.com/ivarvong/pyex/issues/55)) ([80b2f55](https://github.com/ivarvong/pyex/commit/80b2f55210d107e9269e25a0979611bddc0bd93c))

## 0.1.0 — 2026-02-13

Initial release.
Expand Down
2 changes: 1 addition & 1 deletion mix.exs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
defmodule Pyex.MixProject do
use Mix.Project

@version "0.1.0"
@version "0.2.0"
@source_url "https://github.com/ivarvong/pyex"

def project do
Expand Down