diff --git a/README.md b/README.md index f5c8a95..153a634 100644 --- a/README.md +++ b/README.md @@ -38,8 +38,8 @@ Every host already has its own Roslyn constraints (Unity pins 4.8 because of `Sy ## C# in two lines ```xml - - + + ``` diff --git a/dotnet/Directory.Build.props b/dotnet/Directory.Build.props index 373ca97..f6154bc 100644 --- a/dotnet/Directory.Build.props +++ b/dotnet/Directory.Build.props @@ -6,7 +6,7 @@ true $(NoWarn);CS1591 true - 0.3.1 + 0.4.0 Ivan Murzak Copyright (c) 2026 Ivan Murzak https://github.com/IvanMurzak/Code-Exec diff --git a/python/code_exec/__init__.py b/python/code_exec/__init__.py index da95b45..c9f4992 100644 --- a/python/code_exec/__init__.py +++ b/python/code_exec/__init__.py @@ -13,4 +13,4 @@ __all__ = ["run", "run_json", "run_b64", "set_value_converter", "set_default_timeout_ms", "set_max_timeout_ms", "set_max_recursion_limit", "SnippetTimeout", "SnippetThreadStopped", "SNIPPET_FILE"] -__version__ = "0.3.0" +__version__ = "0.4.0" diff --git a/spec/contract.md b/spec/contract.md index 7b2705d..1570977 100644 --- a/spec/contract.md +++ b/spec/contract.md @@ -1,4 +1,4 @@ -# Code-Exec contract (v0.3) +# Code-Exec contract (v0.4) One request/response shape for every runtime (C# and Python) and every host (Unity, Godot, BRUTAL, Unreal, plain .NET). **This file is normative: a runtime that disagrees with it is the bug.** Behaviour changes start here, then @@ -301,7 +301,7 @@ Lengths are in characters: UTF-16 code units in C#, code points in Python. A lim ## Changelog -- **Unreleased** — execution guards (§3.6): C# snippets, full source and includes stop with `Runtime` +- **v0.4.0** — execution guards (§3.6): C# snippets, full source and includes stop with `Runtime` (`Recursion too deep`) before a stack overflow and with `Timeout` once `timeoutMs` is spent, also in synchronous code on the main thread; Python stops with `Timeout` through a watchdog (§4). `timeoutMs` applies to both runtimes; `0` means the host's default (120000), a negative value is `InvalidRequest`. Full-source mode gets the request's `usings`