You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Phase 2: bump floor to Python 3.10, version to 2.0.0
Drop Python 3.8/3.9 support. Remove all dead version guards
(18 sites): ast.Index wrappers (3.9), posonlyargs hasattr checks
(3.8), CodeType positional construction (3.8), types.UnionType
guard (3.10). Include posonlyargs directly in arguments()
constructors. Remove walrus-inside-subscript parens (now 3.10+).
Update TODO comments: parenthesis syntax for macro arguments is
now deprecated; kept for backward compatibility.
Update metadata: requires-python >=3.10,<3.15, mcpyrate dev dep,
classifiers (drop 3.8/3.9, add 3.13/3.14, Production/Stable).
CI matrix: 3.10–3.14 + pypy-3.11. Coverage on 3.12.
Update CLAUDE.md, README.md, CONTRIBUTING.md.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: CLAUDE.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,11 +12,11 @@ A Python library providing language extensions and utilities inspired by Lisp, H
12
12
13
13
## API stability
14
14
15
-
Released as 1.0.0 in February 2026, signalling API stability. The public API (everything in `__all__`) should remain backward-compatible. If backward-incompatible changes become necessary (e.g. due to Python 3.13/3.14 compat), they warrant a 2.0.0 release. Prefer non-breaking solutions when possible.
15
+
Released as 2.0.0 in March 2026 (floor bump + mcpyrate 4.0.0 dependency). The public API (everything in `__all__`) should remain backward-compatible. Prefer non-breaking solutions when possible.
16
16
17
17
## Build and development
18
18
19
-
Uses PDM with `pdm-backend`. Python 3.8–3.12, also PyPy 3.8–3.10. Version 3.13/3.14 compatibility update pending (will be released as 1.1.0).
19
+
Uses PDM with `pdm-backend`. Python 3.10–3.14, also PyPy 3.11.
Copy file name to clipboardExpand all lines: CONTRIBUTING.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -118,7 +118,7 @@ The `lazify` and `continuations` macros are the most complex (and perhaps fearso
118
118
119
119
`unpythonic.syntax.scopeanalyzer` is a unfortunate artifact that is needed to implement macros that interact with Python's scoping rules, notably `let`. Fortunately, [the language reference explicitly documents](https://docs.python.org/3/reference/executionmodel.html#naming-and-binding) what is needed for a lexical scope analysis for Python. So we have just implemented that (better, as an AST analysis, rather than scanning the surface syntax text).
120
120
121
-
As of the first half of 2021, the main target platforms are **CPython 3.8**and**PyPy3 3.7** (since as of April 2021, PyPy3 does not have 3.8 yet). The code should run on 3.6 or any later Python. We have [a GitHub workflow](https://github.com/Technologicat/unpythonic/actions?query=workflow%3A%22Python+package%22) that runs the test suite on CPython 3.6 through 3.9, and on PyPy3.
121
+
As of v2.0.0, the main target platforms are **CPython 3.10**through**3.14**, and **PyPy3** (language version 3.11). We have [a GitHub workflow](https://github.com/Technologicat/unpythonic/actions?query=workflow%3A%22Python+package%22) that runs the test suite on these platforms.
Copy file name to clipboardExpand all lines: README.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -17,7 +17,7 @@ None required.
17
17
18
18
-[`mcpyrate`](https://github.com/Technologicat/mcpyrate) optional, to enable the syntactic macro layer, an interactive macro REPL, and some example dialects.
19
19
20
-
As of v0.15.3, `unpythonic` runs on CPython 3.8, 3.9 and 3.10, 3.11, 3.12, and PyPy3 (language versions 3.8, 3.9, 3.10); the [CI](https://en.wikipedia.org/wiki/Continuous_integration) process verifies the tests pass on those platforms. New Python versions are added and old ones are removed following the [Long-term support roadmap](https://github.com/Technologicat/unpythonic/issues/1).
20
+
As of v2.0.0, `unpythonic` runs on CPython 3.10, 3.11, 3.12, 3.13, 3.14, and PyPy3 (language version 3.11); the [CI](https://en.wikipedia.org/wiki/Continuous_integration) process verifies the tests pass on those platforms. New Python versions are added and old ones are removed following the [Long-term support roadmap](https://github.com/Technologicat/unpythonic/issues/1).
Copy file name to clipboardExpand all lines: unpythonic/syntax/__init__.py
+2-1Lines changed: 2 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -81,7 +81,8 @@
81
81
82
82
# TODO: 0.16: AST pattern matching for `mcpyrate`? Would make destructuring easier. A writable representation (auto-viewify) is a pain to build, though...
83
83
84
-
# TODO: Far future: Change decorator macro invocations to use [] instead of () to pass macro arguments. Requires Python 3.9, so the earliest time to do this is when 3.9 becomes the minimum Python version for `unpythonic`.
84
+
# Parenthesis syntax for decorator macro arguments is deprecated; bracket syntax is preferred.
85
+
# Parenthesis syntax is kept for backward compatibility.
0 commit comments