NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #1906 most downloaded on PyPI
Monty, the Python sandbox: bindings plus the worker binary
Last release 9 days ago
25 Sep 2026
Ships fairly regularly
a new release about every 2 weeks
Nearly every release is documented
notes for 23 of 25 stable releases
Nothing withdrawn
no release was ever pulled
8 months old
34 releases · first in 2026
One column per month.
Drop the experimental framing ahead of v1 by @rewitt94 in #811
'...' % foo and b'...' % bar by @samuelcolvin in #825format() builtin by @samuelcolvin in #827date.today() / datetime.now() in standard execution by @rewitt94 in #812fma by @samuelcolvin in #831print(file=sys.stderr) by @rewitt94 in #818binascii with the uu, quoted-printable and CRC-16 conversions by @rewitt94 in #816examples dependency group opt-in by @samuelcolvin in #852lookup__mutation.py by @samuelcolvin in #854pow(), round() and the math module by @samuelcolvin in #853casefold and other case methods compatibility by @samuelcolvin in #857itertools callables bar tee by @samuelcolvin in #860tuple[int, str] and dict | dict by @samuelcolvin in #858sys constants with a known value by @samuelcolvin in #863chain, pairwise and accumulate by @rewitt94 in #843itertools methods by @samuelcolvin in #862random module and an os.urandom host call by @samuelcolvin in #867copy module by @rewitt94 in #791datetime by @rewitt94 in #838PyTrait::py_call by @rewitt94 in #878SOFT_LIMIT variable from monty-alloc by @davidhewitt in #763time.time(), time.sleep() and asyncio.sleep() by @samuelcolvin in #866pool-architecture.md by @davidhewitt in #887max_duration with feed and turn limits by @rewitt94 in #880StaticStrings alphabetically by @rewitt94 in #889DumpError for future compatibility by @rewitt94 in #890eval(), exec() and locals() by @samuelcolvin in #855time module by @samuelcolvin in #901AutoOsCalls to OsPolicy by @samuelcolvin in #902ruff, pre-check source by @samuelcolvin in #906monty-proto's self dev-dependency by @samuelcolvin in #908CBOR instead of postcard by @samuelcolvin in #913copy in one place by @rewitt94 in #894Type::class_getattr by @rewitt94 in #910BuiltinFunction through napi by @rewitt94 in #911Full Changelog: v0.0.23...v1.0.0
Switch dumps to use CBOR instead of postcard by @samuelcolvin in #913
CBOR instead of postcard by @samuelcolvin in #913Full Changelog: v1.0.0-beta.2...v1.0.0-beta.3
bump to b2, fix monty-proto 's self dev-dependency by @samuelcolvin in #908
monty-proto's self dev-dependency by @samuelcolvin in #908(v1.0.0-beta.1 released failed on crates.io, hence beta 2 release)
'...' % foo and b'...' % bar by @samuelcolvin in #825format() builtin by @samuelcolvin in #827date.today() / datetime.now() in standard execution by @rewitt94 in #812fma by @samuelcolvin in #831print(file=sys.stderr) by @rewitt94 in #818binascii with the uu, quoted-printable and CRC-16 conversions by @rewitt94 in #816examples dependency group opt-in by @samuelcolvin in #852lookup__mutation.py by @samuelcolvin in #854pow(), round() and the math module by @samuelcolvin in #853casefold and other case methods compatibility by @samuelcolvin in #857itertools callables bar tee by @samuelcolvin in #860tuple[int, str] and dict | dict by @samuelcolvin in #858sys constants with a known value by @samuelcolvin in #863chain, pairwise and accumulate by @rewitt94 in #843itertools methods by @samuelcolvin in #862random module and an os.urandom host call by @samuelcolvin in #867copy module by @rewitt94 in #791datetime by @rewitt94 in #838PyTrait::py_call by @rewitt94 in #878SOFT_LIMIT variable from monty-alloc by @davidhewitt in #763time.time(), time.sleep() and asyncio.sleep() by @samuelcolvin in #866pool-architecture.md by @davidhewitt in #887max_duration with feed and turn limits by @rewitt94 in #880StaticStrings alphabetically by @rewitt94 in #889DumpError for future compatibility by @rewitt94 in #890eval(), exec() and locals() by @samuelcolvin in #855time module by @samuelcolvin in #901AutoOsCalls to OsPolicy by @samuelcolvin in #902ruff, pre-check source by @samuelcolvin in #906Full Changelog: v1.0.0-beta.1...v1.0.0-beta.2
Drop the experimental framing ahead of v1 by @rewitt94 in #811
'...' % foo and b'...' % bar by @samuelcolvin in #825format() builtin by @samuelcolvin in #827date.today() / datetime.now() in standard execution by @rewitt94 in #812fma by @samuelcolvin in #831print(file=sys.stderr) by @rewitt94 in #818binascii with the uu, quoted-printable and CRC-16 conversions by @rewitt94 in #816examples dependency group opt-in by @samuelcolvin in #852lookup__mutation.py by @samuelcolvin in #854pow(), round() and the math module by @samuelcolvin in #853casefold and other case methods compatibility by @samuelcolvin in #857itertools callables bar tee by @samuelcolvin in #860tuple[int, str] and dict | dict by @samuelcolvin in #858sys constants with a known value by @samuelcolvin in #863chain, pairwise and accumulate by @rewitt94 in #843itertools methods by @samuelcolvin in #862random module and an os.urandom host call by @samuelcolvin in #867copy module by @rewitt94 in #791datetime by @rewitt94 in #838PyTrait::py_call by @rewitt94 in #878SOFT_LIMIT variable from monty-alloc by @davidhewitt in #763time.time(), time.sleep() and asyncio.sleep() by @samuelcolvin in #866pool-architecture.md by @davidhewitt in #887max_duration with feed and turn limits by @rewitt94 in #880StaticStrings alphabetically by @rewitt94 in #889DumpError for future compatibility by @rewitt94 in #890eval(), exec() and locals() by @samuelcolvin in #855time module by @samuelcolvin in #901AutoOsCalls to OsPolicy by @samuelcolvin in #902ruff, pre-check source by @samuelcolvin in #906Full Changelog: v0.0.23...v1.0.0-beta.1
Debounce print output in the worker by @rewitt94 in #809
itertools adaptors: accumulate, batched, zip_longest by @rewitt94 in #779Full Changelog: v0.0.22...v0.0.23
Better python executables and readmes by @samuelcolvin in #703
__repr__ mutates the container by @samuelcolvin in #705StackFrame wire validation rejecting multi-line spans by @samuelcolvin in #714package-lock.json and improve pre-commit by @samuelcolvin in #737pending_os_effect only at the host boundary by @rewitt94 in #722itertools.chain when an argument fails by @rewitt94 in #748@dataclass(eq=..., frozen=...) by @rewitt94 in #650itertools adaptors: takewhile, dropwhile, filterfalse, starmap by @rewitt94 in #657self_id around by @davidhewitt in #765object and object.__setattr__, the hook-bypassing write by @rewitt94 in #728HeapObjectRead to reduce self_id passing by @davidhewitt in #770__index__ for indexing, slicing and integer arguments by @rewitt94 in #654CachedFrame concept by @davidhewitt in #762functools module with reduce by @rewitt94 in #760base64 module by @rewitt94 in #761allocate_as helper for typed allocation by @davidhewitt in #781ruff crates by @davidhewitt in #777__eq__ mutates the container mid-lookup by @rewitt94 in #783gather leave its siblings running by @rewitt94 in #772datetime.time by @rewitt94 in #773EitherStr hash by @davidhewitt in #793main by @davidhewitt in #792_typeshed/_type_checker_internals.pyi so TypedDict attribute access is rejected by @samuelcolvin in #802functools.partial by @rewitt94 in #787Dataclass with ClassInstance carrying instance identity by @samuelcolvin in #682max_suspensions to ResourceLimits, enforced by the host via AbortFeed by @samuelcolvin in #806base64 by @rewitt94 in #790Full Changelog: v0.0.21...v0.0.22
Protocol version utils by @samuelcolvin in https://github.com/pydantic/monty/pull/697
Full Changelog: https://github.com/pydantic/monty/compare/v0.0.20...v0.0.21
Full Changelog: v0.0.20...v0.0.21
Populate class __annotations__ (stringized) by @rewitt94 in https://github.com/pydantic/monty/pull/593
__annotations__ (stringized) by @rewitt94 in https://github.com/pydantic/monty/pull/593npm audit warnings in monty js by @davidhewitt in https://github.com/pydantic/monty/pull/617ResourceTracker generic, always use ResourceTracker by @samuelcolvin in https://github.com/pydantic/monty/pull/613ExtFunction types by @davidhewitt in https://github.com/pydantic/monty/pull/598PyTrait by @davidhewitt in https://github.com/pydantic/monty/pull/568MontyIter into dedicated iterator types by @davidhewitt in https://github.com/pydantic/monty/pull/602__iter__ / __next__ / __contains__ by @rewitt94 in https://github.com/pydantic/monty/pull/609py_contains onto PyTrait, fix in for bytes, add coverage by @rewitt94 in https://github.com/pydantic/monty/pull/625os.listdir and filesystem wrappers in the os module by @samuelcolvin in https://github.com/pydantic/monty/pull/622py_contains issues from the #625 review by @rewitt94 in https://github.com/pydantic/monty/pull/628ShutdownDump turn-ender and cheap frame classification by @samuelcolvin in https://github.com/pydantic/monty/pull/630itertools foundation with count and repeat by @rewitt94 in https://github.com/pydantic/monty/pull/632@dataclass defined inside the sandbox by @rewitt94 in https://github.com/pydantic/monty/pull/626collections: deque, namedtuple, defaultdict, Counter by @rewitt94 in https://github.com/pydantic/monty/pull/608HeapData from 160 to 80 bytes by boxing large variants by @samuelcolvin in https://github.com/pydantic/monty/pull/636itertools adaptors: pairwise, compress, islice, chain, cycle by @rewitt94 in https://github.com/pydantic/monty/pull/635py_set_attr onto PyTrait by @davidhewitt in https://github.com/pydantic/monty/pull/638NotImplemented and use it for user equality by @davidhewitt in https://github.com/pydantic/monty/pull/567@abstractmethod members keep their types by @samuelcolvin in https://github.com/pydantic/monty/pull/671logfire from CLI by default by @samuelcolvin in https://github.com/pydantic/monty/pull/683pydantic-monty into a metapackage over client and runtime by @samuelcolvin in https://github.com/pydantic/monty/pull/678mod.rs, stop annoying usize_field warnings by @samuelcolvin in https://github.com/pydantic/monty/pull/690test-rust by @samuelcolvin in https://github.com/pydantic/monty/pull/694Full Changelog: https://github.com/pydantic/monty/compare/v0.0.19...v0.0.20
__annotations__ (stringized) by @rewitt94 in #593npm audit warnings in monty js by @davidhewitt in #617ResourceTracker generic, always use ResourceTracker by @samuelcolvin in #613ExtFunction types by @davidhewitt in #598PyTrait by @davidhewitt in #568MontyIter into dedicated iterator types by @davidhewitt in #602__iter__ / __next__ / __contains__ by @rewitt94 in #609py_contains onto PyTrait, fix in for bytes, add coverage by @rewitt94 in #625os.listdir and filesystem wrappers in the os module by @samuelcolvin in #622py_contains issues from the #625 review by @rewitt94 in #628ShutdownDump turn-ender and cheap frame classification by @samuelcolvin in #630itertools foundation with count and repeat by @rewitt94 in #632@dataclass defined inside the sandbox by @rewitt94 in #626collections: deque, namedtuple, defaultdict, Counter by @rewitt94 in #608HeapData from 160 to 80 bytes by boxing large variants by @samuelcolvin in #636itertools adaptors: pairwise, compress, islice, chain, cycle by @rewitt94 in #635py_set_attr onto PyTrait by @davidhewitt in #638NotImplemented and use it for user equality by @davidhewitt in #567@abstractmethod members keep their types by @samuelcolvin in #671logfire from CLI by default by @samuelcolvin in #683pydantic-monty into a metapackage over client and runtime by @samuelcolvin in #678mod.rs, stop annoying usize_field warnings by @samuelcolvin in #690test-rust by @samuelcolvin in #694Full Changelog: v0.0.19...v0.0.20
introduce iterator helpers that manage recursion / time by @davidhewitt in https://github.com/pydantic/monty/pull/454
StringBuilder to guard strings under construction by @davidhewitt in https://github.com/pydantic/monty/pull/448FromArgs slots cleanup by @samuelcolvin in https://github.com/pydantic/monty/pull/484__name__ et al. by @samuelcolvin in https://github.com/pydantic/monty/pull/495ForIter heap read by @tontinton in https://github.com/pydantic/monty/pull/493py_eq to accept &Value for RHS by @davidhewitt in https://github.com/pydantic/monty/pull/508feed_start API to both python & JS by @davidhewitt in https://github.com/pydantic/monty/pull/507unicodedata module, refactor and improve FromArgs macros by @samuelcolvin in https://github.com/pydantic/monty/pull/522external_lookup by @samuelcolvin in https://github.com/pydantic/monty/pull/520encode and decode codecs and error types by @samuelcolvin in https://github.com/pydantic/monty/pull/523resume_auto() to iteratively drive feed_start snapshots by @samuelcolvin in https://github.com/pydantic/monty/pull/527evaluate_function re-entry to prevent infinite recursion by @samuelcolvin in https://github.com/pydantic/monty/pull/529git commit and git push for claude by @samuelcolvin in https://github.com/pydantic/monty/pull/5320.0.19-beta.2 by @samuelcolvin in https://github.com/pydantic/monty/pull/542DropWithHeap / DropWithVM by @davidhewitt in https://github.com/pydantic/monty/pull/521monty-cli to monty-runtime by @samuelcolvin in https://github.com/pydantic/monty/pull/5440.0.19-beta.3 by @samuelcolvin in https://github.com/pydantic/monty/pull/555monty-cpython container by @samuelcolvin in https://github.com/pydantic/monty/pull/563evaluate_function by @davidhewitt in https://github.com/pydantic/monty/pull/573clone_immediate into clone_with_heap by @davidhewitt in https://github.com/pydantic/monty/pull/578fs to monty-fs by @samuelcolvin in https://github.com/pydantic/monty/pull/576int(), str(), round() by @samuelcolvin in https://github.com/pydantic/monty/pull/584PyTrait by @davidhewitt in https://github.com/pydantic/monty/pull/575OsFunctionCall::Used by @samuelcolvin in https://github.com/pydantic/monty/pull/583id by @davidhewitt in https://github.com/pydantic/monty/pull/580py_iter by @davidhewitt in https://github.com/pydantic/monty/pull/588make install-py by @davidhewitt in https://github.com/pydantic/monty/pull/595*, not just five container types by @rewitt94 in https://github.com/pydantic/monty/pull/589monty-types crate by @samuelcolvin in https://github.com/pydantic/monty/pull/592MontyObject conversion error paths by @samuelcolvin in https://github.com/pydantic/monty/pull/600dev-py install python dev deps by @davidhewitt in https://github.com/pydantic/monty/pull/606ResourceError::Exception and fix check_replace_size shrinking bypass by @samuelcolvin in https://github.com/pydantic/monty/pull/610max_allocations from resource limits by @samuelcolvin in https://github.com/pydantic/monty/pull/611Full Changelog: https://github.com/pydantic/monty/compare/v0.0.18...v0.0.19
StringBuilder to guard strings under construction by @davidhewitt in #448FromArgs slots cleanup by @samuelcolvin in #484__name__ et al. by @samuelcolvin in #495ForIter heap read by @tontinton in #493py_eq to accept &Value for RHS by @davidhewitt in #508feed_start API to both python & JS by @davidhewitt in #507unicodedata module, refactor and improve FromArgs macros by @samuelcolvin in #522external_lookup by @samuelcolvin in #520encode and decode codecs and error types by @samuelcolvin in #523resume_auto() to iteratively drive feed_start snapshots by @samuelcolvin in #527evaluate_function re-entry to prevent infinite recursion by @samuelcolvin in #529git commit and git push for claude by @samuelcolvin in #5320.0.19-beta.2 by @samuelcolvin in #542DropWithHeap / DropWithVM by @davidhewitt in #521monty-cli to monty-runtime by @samuelcolvin in #5440.0.19-beta.3 by @samuelcolvin in #555monty-cpython container by @samuelcolvin in #563evaluate_function by @davidhewitt in #573clone_immediate into clone_with_heap by @davidhewitt in #578fs to monty-fs by @samuelcolvin in #576int(), str(), round() by @samuelcolvin in #584PyTrait by @davidhewitt in #575OsFunctionCall::Used by @samuelcolvin in #583id by @davidhewitt in #580py_iter by @davidhewitt in #588make install-py by @davidhewitt in #595*, not just five container types by @rewitt94 in #589monty-types crate by @samuelcolvin in #592MontyObject conversion error paths by @samuelcolvin in #600dev-py install python dev deps by @davidhewitt in #606ResourceError::Exception and fix check_replace_size shrinking bypass by @samuelcolvin in #610max_allocations from resource limits by @samuelcolvin in #611Full Changelog: v0.0.18...v0.0.19
fix npm publish by @davidhewitt in https://github.com/pydantic/monty/pull/603
MontyObject conversion error paths by @samuelcolvin in https://github.com/pydantic/monty/pull/600Full Changelog: https://github.com/pydantic/monty/compare/v0.0.19-beta.5...v0.0.19-beta.6
MontyObject conversion error paths by @samuelcolvin in #600Full Changelog: v0.0.19-beta.5...v0.0.19-beta.6
clean up js packaging / smoke test by @davidhewitt in https://github.com/pydantic/monty/pull/550
monty-cpython container by @samuelcolvin in https://github.com/pydantic/monty/pull/563evaluate_function by @davidhewitt in https://github.com/pydantic/monty/pull/573clone_immediate into clone_with_heap by @davidhewitt in https://github.com/pydantic/monty/pull/578fs to monty-fs by @samuelcolvin in https://github.com/pydantic/monty/pull/576int(), str(), round() by @samuelcolvin in https://github.com/pydantic/monty/pull/584PyTrait by @davidhewitt in https://github.com/pydantic/monty/pull/575OsFunctionCall::Used by @samuelcolvin in https://github.com/pydantic/monty/pull/583id by @davidhewitt in https://github.com/pydantic/monty/pull/580py_iter by @davidhewitt in https://github.com/pydantic/monty/pull/588make install-py by @davidhewitt in https://github.com/pydantic/monty/pull/595*, not just five container types by @rewitt94 in https://github.com/pydantic/monty/pull/589monty-types crate by @samuelcolvin in https://github.com/pydantic/monty/pull/592Full Changelog: https://github.com/pydantic/monty/compare/0.0.19-beta.4...v0.0.19-beta.5
monty-cpython container by @samuelcolvin in #563evaluate_function by @davidhewitt in #573clone_immediate into clone_with_heap by @davidhewitt in #578fs to monty-fs by @samuelcolvin in #576int(), str(), round() by @samuelcolvin in #584PyTrait by @davidhewitt in #575OsFunctionCall::Used by @samuelcolvin in #583id by @davidhewitt in #580py_iter by @davidhewitt in #588make install-py by @davidhewitt in #595*, not just five container types by @rewitt94 in #589monty-types crate by @samuelcolvin in #592Full Changelog: 0.0.19-beta.4...v0.0.19-beta.5
monty-wasm-runtime publish false, prep 0.0.19-beta.4 by @samuelcolvin in https://github.com/pydantic/monty/pull/559
Full Changelog: https://github.com/pydantic/monty/compare/0.0.19-beta.3...0.0.19-beta.4
Full Changelog: 0.0.19-beta.3...0.0.19-beta.4
merge DropWithHeap / DropWithVM by @davidhewitt in https://github.com/pydantic/monty/pull/521
DropWithHeap / DropWithVM by @davidhewitt in https://github.com/pydantic/monty/pull/521monty-cli to monty-runtime by @samuelcolvin in https://github.com/pydantic/monty/pull/5440.0.19-beta.3 by @samuelcolvin in https://github.com/pydantic/monty/pull/555Full Changelog: https://github.com/pydantic/monty/compare/0.0.19-beta.2...0.0.19-beta.3
DropWithHeap / DropWithVM by @davidhewitt in #521monty-cli to monty-runtime by @samuelcolvin in #5440.0.19-beta.3 by @samuelcolvin in #555Full Changelog: 0.0.19-beta.2...0.0.19-beta.3
Fixing CI for0.0.19-beta.2 by @samuelcolvin in https://github.com/pydantic/monty/pull/542
0.0.19-beta.2 by @samuelcolvin in https://github.com/pydantic/monty/pull/542Full Changelog: https://github.com/pydantic/monty/compare/0.0.19-beta.1...0.0.19-beta.2
0.0.19-beta.2 by @samuelcolvin in #542Full Changelog: 0.0.19-beta.1...0.0.19-beta.2
introduce iterator helpers that manage recursion / time by @davidhewitt in https://github.com/pydantic/monty/pull/454
StringBuilder to guard strings under construction by @davidhewitt in https://github.com/pydantic/monty/pull/448FromArgs slots cleanup by @samuelcolvin in https://github.com/pydantic/monty/pull/484__name__ et al. by @samuelcolvin in https://github.com/pydantic/monty/pull/495ForIter heap read by @tontinton in https://github.com/pydantic/monty/pull/493py_eq to accept &Value for RHS by @davidhewitt in https://github.com/pydantic/monty/pull/508feed_start API to both python & JS by @davidhewitt in https://github.com/pydantic/monty/pull/507unicodedata module, refactor and improve FromArgs macros by @samuelcolvin in https://github.com/pydantic/monty/pull/522external_lookup by @samuelcolvin in https://github.com/pydantic/monty/pull/520encode and decode codecs and error types by @samuelcolvin in https://github.com/pydantic/monty/pull/523resume_auto() to iteratively drive feed_start snapshots by @samuelcolvin in https://github.com/pydantic/monty/pull/527evaluate_function re-entry to prevent infinite recursion by @samuelcolvin in https://github.com/pydantic/monty/pull/529git commit and git push for claude by @samuelcolvin in https://github.com/pydantic/monty/pull/532Full Changelog: https://github.com/pydantic/monty/compare/v0.0.18...0.0.19-beta.1
StringBuilder to guard strings under construction by @davidhewitt in #448FromArgs slots cleanup by @samuelcolvin in #484__name__ et al. by @samuelcolvin in #495ForIter heap read by @tontinton in #493py_eq to accept &Value for RHS by @davidhewitt in #508feed_start API to both python & JS by @davidhewitt in #507unicodedata module, refactor and improve FromArgs macros by @samuelcolvin in #522external_lookup by @samuelcolvin in #520encode and decode codecs and error types by @samuelcolvin in #523resume_auto() to iteratively drive feed_start snapshots by @samuelcolvin in #527evaluate_function re-entry to prevent infinite recursion by @samuelcolvin in #529git commit and git push for claude by @samuelcolvin in #532Full Changelog: v0.0.18...0.0.19-beta.1
switch pre-commit -> prek by @samuelcolvin in https://github.com/pydantic/monty/pull/392
pre-commit -> prek by @samuelcolvin in https://github.com/pydantic/monty/pull/392datetime.tzinfo by @rsr5 in https://github.com/pydantic/monty/pull/397py_repr methods to take &mut VM by @davidhewitt in https://github.com/pydantic/monty/pull/403Task have owning references to its coroutine / gather by @davidhewitt in https://github.com/pydantic/monty/pull/404Heap implementation by @davidhewitt in https://github.com/pydantic/monty/pull/406gc.collect() function only with test-hooks feature by @davidhewitt in https://github.com/pydantic/monty/pull/398VM to a single lifetime by @davidhewitt in https://github.com/pydantic/monty/pull/416main by @davidhewitt in https://github.com/pydantic/monty/pull/417no active frame panic on duplicate coroutine in gather by @rsr5 in https://github.com/pydantic/monty/pull/410gather by @rsr5 in https://github.com/pydantic/monty/pull/420make install-py is often necessary in CLAUDE.md by @davidhewitt in https://github.com/pydantic/monty/pull/426raise cases by @davidhewitt in https://github.com/pydantic/monty/pull/428String heap allocation to go through allocate_string helper by @davidhewitt in https://github.com/pydantic/monty/pull/430&Heap by @davidhewitt in https://github.com/pydantic/monty/pull/441GatherFuture to be a state machine by @davidhewitt in https://github.com/pydantic/monty/pull/433AttributeError in getattr by @davidhewitt in https://github.com/pydantic/monty/pull/442monty_to_py by @davidhewitt in https://github.com/pydantic/monty/pull/453Heap::dec_ref by @davidhewitt in https://github.com/pydantic/monty/pull/451open builtin, with limitations by @samuelcolvin in https://github.com/pydantic/monty/pull/456evaluate_function by @davidhewitt in https://github.com/pydantic/monty/pull/463for / while / if control flow expressions by @davidhewitt in https://github.com/pydantic/monty/pull/465open() methods by @samuelcolvin in https://github.com/pydantic/monty/pull/461value_to_i32 by @samuelcolvin in https://github.com/pydantic/monty/pull/468INT_MAX_STR_DIGITS guard to natural JSON BigInt path by @samuelcolvin in https://github.com/pydantic/monty/pull/475Full Changelog: https://github.com/pydantic/monty/compare/v0.0.17...v0.0.18
Implement setattr builtin function by @friendlymatthew in https://github.com/pydantic/monty/pull/67
setattr builtin function by @friendlymatthew in https://github.com/pydantic/monty/pull/67Full Changelog: https://github.com/pydantic/monty/compare/v0.0.16...v0.0.17
Input safety by @samuelcolvin in https://github.com/pydantic/monty/pull/360
prefix_code -> type_check_stubs by @samuelcolvin in https://github.com/pydantic/monty/pull/361Full Changelog: https://github.com/pydantic/monty/compare/v0.0.15...v0.0.16
fix(vm): fix partial future resolution panics in mixed gathers by @runyaga in https://github.com/pydantic/monty/pull/251
hasattr builtin function by @friendlymatthew in https://github.com/pydantic/monty/pull/66MontySyntaxError for source with lone surrogates by @samuelcolvin in https://github.com/pydantic/monty/pull/355MontyRuntimeError by @samuelcolvin in https://github.com/pydantic/monty/pull/356Monty instance async and without holding the GIL by @samuelcolvin in https://github.com/pydantic/monty/pull/358Full Changelog: https://github.com/pydantic/monty/compare/v0.0.14...v0.0.15
fix panic when parsing source file with lines larger than u16::MAX by @davidhewitt in https://github.com/pydantic/monty/pull/342
ExternalExceptionData by @samuelcolvin in https://github.com/pydantic/monty/pull/349MontyObject by @samuelcolvin in https://github.com/pydantic/monty/pull/348Full Changelog: https://github.com/pydantic/monty/compare/v0.0.13...v0.0.14
correct types for datetime os calls, and not_handled by @samuelcolvin in https://github.com/pydantic/monty/pull/332
not_handled by @samuelcolvin in https://github.com/pydantic/monty/pull/332os and mount on start by @samuelcolvin in https://github.com/pydantic/monty/pull/337Full Changelog: https://github.com/pydantic/monty/compare/v0.0.12...v0.0.13
Repl type checking by @samuelcolvin in https://github.com/pydantic/monty/pull/319
vm.cleanup() with Drop implementation by @davidhewitt in https://github.com/pydantic/monty/pull/326CollectString and CollectStreams for print_output by @samuelcolvin in https://github.com/pydantic/monty/pull/322Full Changelog: https://github.com/pydantic/monty/compare/v0.0.11...v0.0.12
JSON perf improvements by @samuelcolvin in https://github.com/pydantic/monty/pull/314
Full Changelog: https://github.com/pydantic/monty/compare/v0.0.10...v0.0.11
add README link to Go bindings by @ewhauser in https://github.com/pydantic/monty/pull/298
import a, b, c) by @ilblackdragon in https://github.com/pydantic/monty/pull/296cargo rustc --profile=check) by @davidhewitt in https://github.com/pydantic/monty/pull/301Executor and ReplExecutor types by @davidhewitt in https://github.com/pydantic/monty/pull/303typing_extensions by @penberg in https://github.com/pydantic/monty/pull/308Full Changelog: https://github.com/pydantic/monty/compare/v0.0.9...v0.0.10
try to pass vm around instead of (heap, interns) by @davidhewitt in https://github.com/pydantic/monty/pull/234
(heap, interns) by @davidhewitt in https://github.com/pydantic/monty/pull/234HeapItem trait by @davidhewitt in https://github.com/pydantic/monty/pull/276INT_MAX_STR_DIGITS limit for BigInt string conversion by @samuelcolvin in https://github.com/pydantic/monty/pull/284str.expandtabs(tabsize) method by @sjhddh in https://github.com/pydantic/monty/pull/266take_data! pattern inside Heap with HeapReader API by @davidhewitt in https://github.com/pydantic/monty/pull/265HeapReader API by @davidhewitt in https://github.com/pydantic/monty/pull/291datetime by @samuelcolvin in https://github.com/pydantic/monty/pull/290absolute_paths with length > 2 with clippy by @samuelcolvin in https://github.com/pydantic/monty/pull/292json module by @samuelcolvin in https://github.com/pydantic/monty/pull/293Full Changelog: https://github.com/pydantic/monty/compare/v0.0.8...v0.0.9
Add rustyline to REPL for line editing and history by @samuelcolvin in https://github.com/pydantic/monty/pull/189
take_data! from get/set cell value methods by @davidhewitt in https://github.com/pydantic/monty/pull/191pyo3-build-config to make running tests on ubuntu easier by @davidhewitt in https://github.com/pydantic/monty/pull/192Heap::inc_ref only require immutable heap borrow by @davidhewitt in https://github.com/pydantic/monty/pull/193filter builtin function by @friendlymatthew in https://github.com/pydantic/monty/pull/63HeapData variants by @davidhewitt in https://github.com/pydantic/monty/pull/199getattr builtin function by @friendlymatthew in https://github.com/pydantic/monty/pull/65Heap::with_two by @davidhewitt in https://github.com/pydantic/monty/pull/203&mut HeapData with HeapDataMut by @davidhewitt in https://github.com/pydantic/monty/pull/206py_call_attr and py_call_attr_raw by @davidhewitt in https://github.com/pydantic/monty/pull/223builtins to take VM by @davidhewitt in https://github.com/pydantic/monty/pull/224clone_with_heap and drop_with_heap to take VM by @davidhewitt in https://github.com/pydantic/monty/pull/225DropWithHeap trait by @davidhewitt in https://github.com/pydantic/monty/pull/227VM by @davidhewitt in https://github.com/pydantic/monty/pull/228external_functions parameter, auto-detect with NameLookup by @samuelcolvin in https://github.com/pydantic/monty/pull/214str and bytes by @davidhewitt in https://github.com/pydantic/monty/pull/231str and bytes comparison by @samuelcolvin in https://github.com/pydantic/monty/pull/233re module implementation by @Embers-of-the-Fire in https://github.com/pydantic/monty/pull/157re.sub() to prevent untracked allocations by @MRoci in https://github.com/pydantic/monty/pull/243AttrCallResult into CallResult by @davidhewitt in https://github.com/pydantic/monty/pull/256py_bool and py_len to take VM by @davidhewitt in https://github.com/pydantic/monty/pull/257PrintWriter inside VM by @davidhewitt in https://github.com/pydantic/monty/pull/258vm instead of heap, interns by @davidhewitt in https://github.com/pydantic/monty/pull/260Namespaces; keep locals on the stack by @davidhewitt in https://github.com/pydantic/monty/pull/259Full Changelog: https://github.com/pydantic/monty/compare/v0.0.7...v0.0.8
convert files in bytecode/vm to HeapGuard by @davidhewitt in https://github.com/pydantic/monty/pull/166
bytecode/vm to HeapGuard by @davidhewitt in https://github.com/pydantic/monty/pull/166PrintWriter in VM by @davidhewitt in https://github.com/pydantic/monty/pull/142signature.rs and more builtins to HeapGuard by @davidhewitt in https://github.com/pydantic/monty/pull/170redundant_clone clippy lint by @davidhewitt in https://github.com/pydantic/monty/pull/169map builtin function by @friendlymatthew in https://github.com/pydantic/monty/pull/64Full Changelog: https://github.com/pydantic/monty/compare/v0.0.6...v0.0.7
Add suspendable REPL execution by @ex3ndr in https://github.com/pydantic/monty/pull/126
Full Changelog: https://github.com/pydantic/monty/compare/v0.0.5...v0.0.6
Upgrade GitHub Actions for Node 24 compatibility by @salmanmkc in https://github.com/pydantic/monty/pull/129
id() by @davidhewitt in https://github.com/pydantic/monty/pull/89i64::MIN division overflow in //, %, and divmod() by @zozo123 in https://github.com/pydantic/monty/pull/147clap by @davidhewitt in https://github.com/pydantic/monty/pull/149src/types files to HeapGuard by @davidhewitt in https://github.com/pydantic/monty/pull/143check_pow_size by @samuelcolvin in https://github.com/pydantic/monty/pull/158TypeError when comparing heap-allocated strings by @sathish-t in https://github.com/pydantic/monty/pull/159aarch64-unknown-linux-gnu (linux-arm64) JS binding target by @Bl3f in https://github.com/pydantic/monty/pull/154max_duration better by @samuelcolvin in https://github.com/pydantic/monty/pull/156Full Changelog: https://github.com/pydantic/monty/compare/v0.0.4...v0.0.5
getattr improvements, property and os.environ support by @samuelcolvin in https://github.com/pydantic/monty/pull/96
getattr improvements, property and os.environ support by @samuelcolvin in https://github.com/pydantic/monty/pull/96HeapGuard helper by @davidhewitt in https://github.com/pydantic/monty/pull/88LongInt usage exceptions by @samuelcolvin in https://github.com/pydantic/monty/pull/113Full Changelog: https://github.com/pydantic/monty/compare/v0.0.3...v0.0.4
Add release process documentation by @petyosi in https://github.com/pydantic/monty/pull/98
Full Changelog: https://github.com/pydantic/monty/compare/v0.0.2...v0.0.3
working on type stubs by @samuelcolvin in https://github.com/pydantic/monty/pull/75
Full Changelog: https://github.com/pydantic/monty/compare/v0.0.1...v0.0.2
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →