diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 36c0080bb..149395181 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -48,8 +48,6 @@ jobs: shell: bash run: | if [[ ${{ matrix.python }} = pyodide ]] ; then - pip install 'pydantic < 2' - # https://github.com/pyodide/pyodide/pull/3971 npm install pyodide pip install pyodide-build pyodide venv .venv-pyodide diff --git a/NEWS.rst b/NEWS.rst index 33142287b..b599f2292 100644 --- a/NEWS.rst +++ b/NEWS.rst @@ -1,11 +1,11 @@ .. default-role:: code -Unreleased -============================= +1.0.0 ("Afternoon Review", released 2024-09-22) +====================================================================== -New Features ------------------------------- -* Python 3.13 is now supported. +Supports Python 3.8 – Python 3.13 + +See also the announcement post for this release (to be linked). Bug Fixes ------------------------------ diff --git a/README.md b/README.md index 1ddcace49..7cd0999d6 100644 --- a/README.md +++ b/README.md @@ -15,9 +15,6 @@ To install the latest release of Hy, just use the command `pip3 install --user hy`. Then you can start an interactive read-eval-print loop (REPL) with the command `hy`, or run a Hy program with `hy myprogram.hy`. -Hy is tested on all released and currently maintained versions of CPython (on -Linux, Windows, and Mac OS), and on recent versions of PyPy and Pyodide. - * [The Hy homepage](http://hylang.org) * [Try Hy with a web console](http://hylang.org/try-hy) diff --git a/docs/_static/custom.css b/docs/_static/custom.css index 6f4cd53e1..e1e9f7547 100644 --- a/docs/_static/custom.css +++ b/docs/_static/custom.css @@ -21,7 +21,7 @@ a:visited, div.related a:visited code {background-color: #dfd} -.highlight .s +.highlight .s, .highlight .s2 {color: #060} .highlight .ss {color: #040} diff --git a/docs/conf.py b/docs/conf.py index 2209362d2..3e2635bd7 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -16,13 +16,15 @@ project = 'Hy' copyright = '%s the authors' % time.strftime('%Y') -html_title = f'Hy {hy.__version__} manual' version = '.'.join(hy.__version__.split('.')[:-1]) # The short dotted version identifier -release = hy.__version__ +release = hy.__version__ + ('' if hy.nickname is None else f' ({hy.nickname})') # The full version identifier, including alpha, beta, and RC tags +html_title = f'Hy {release} manual' + # Ultimately this will only appear on the page itself. The actual HTML title + # will be simplified in post-processing. -hyrule_version = 'v0.6.0' +hyrule_version = 'v0.7.0' source_suffix = '.rst' master_doc = 'index' diff --git a/docs/index.rst b/docs/index.rst index f28d6fe47..b1bfab597 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -14,20 +14,18 @@ Hy is a Lisp dialect that's embedded in Python. Since Hy transforms its Lisp code into Python abstract syntax tree (AST) objects, you have the whole beautiful world of Python at your fingertips, in Lisp form. -.. Changes to the below paragraphs should be mirrored on Hy's homepage +.. Changes to the below paragraph should be mirrored on Hy's homepage and the README. To install the latest release of Hy, just use the command ``pip3 install --user hy``. Then you can start an interactive read-eval-print loop (REPL) with the command ``hy``, or run a Hy program with ``hy myprogram.hy``. -Hy is tested on all released and currently maintained versions of CPython (on -Linux, Windows, and Mac OS), and on recent versions of PyPy and Pyodide. - .. toctree:: :maxdepth: 3 whyhy + versioning tutorial syntax semantics diff --git a/docs/tutorial.rst b/docs/tutorial.rst index 9b5f5780d..5d1723c89 100644 --- a/docs/tutorial.rst +++ b/docs/tutorial.rst @@ -401,14 +401,6 @@ you have no interest in writing your own Python code, because it will introduce you to the semantics, and you'll need a reading knowledge of Python syntax to understand example code for Python libraries. -Refer to the rest of this manual for Hy-specific features. Like Hy itself, the -manual is incomplete, but :ref:`contributions ` are always welcome. -See `the wiki `_ for tips +Refer to the rest of this manual for Hy-specific features. See `the wiki `_ for tips on getting Hy to work with other software. For an official full-blown example Hy program, see `Infinitesimal Quest 2 + ε `_. - -Bear in mind that Hy is still unstable, and with each release along the -way to Hy 1.0, there are new breaking changes. Refer to `the NEWS file -`_ for how to update your -code when you upgrade Hy, and be sure you're reading the version of this manual -(shown at the top of each page) that matches the version of Hy you're running. diff --git a/docs/versioning.rst b/docs/versioning.rst new file mode 100644 index 000000000..e4e658f30 --- /dev/null +++ b/docs/versioning.rst @@ -0,0 +1,9 @@ +============================ +Versioning and compatibility +============================ + +Starting with Hy 1.0.0, Hy is `semantically versioned `_. Refer to `the NEWS file `_ for a summary of user-visible changes brought on by each version, and how to update your code in case of breaking changes. Be sure you're reading the version of this manual (shown at the top of each page) that matches the version of Hy you're running. + +Hy is tested on `all released and currently maintained versions of CPython `_ (on Linux, Windows, and Mac OS), and on recent versions of PyPy and Pyodide. We usually find that for Hy, unlike most Python packages, we need to change things to fully support each new 3.x release of Python. We may drop compatibility with a version of Python after the CPython guys cease maintaining it, and note that we construe such a change as non-breaking, so we won't bump Hy's major version for it. But we will at least bump the minor version, and ``python_requires`` in Hy's ``setup.py`` should prevent you from installing a Hy version that won't work with your Python version. + +Starting with Hy 1.0.0, each version of Hy also has a nickname, such as "Afternoon Review". Nicknames are used in alphabetical order, with a nickname starting with "Z" then wrapping around to "A". Nicknames are provided mostly for the amusement of the maintainer, but can be useful as a conspicuous sign that you're not using the version you expected. In code, you can get the current nickname as a string (or ``None``, for unreleased commits of Hy) with ``hy.nickname``. diff --git a/hy/__init__.py b/hy/__init__.py index 23e550473..3b81e5a6b 100644 --- a/hy/__init__.py +++ b/hy/__init__.py @@ -1,4 +1,5 @@ __version__ = 'unreleased' +nickname = None def _initialize_env_var(env_var, default_val): diff --git a/hy/repl.py b/hy/repl.py index ebced9022..e44dd9f2a 100644 --- a/hy/repl.py +++ b/hy/repl.py @@ -431,8 +431,9 @@ def run(self): return 0 def banner(self): - return "Hy {version} using {py}({build}) {pyversion} on {os}".format( + return "Hy {version}{nickname} using {py}({build}) {pyversion} on {os}".format( version=hy.__version__, + nickname="" if hy.nickname is None else f' ({hy.nickname})', py=platform.python_implementation(), build=platform.python_build()[0], pyversion=platform.python_version(), diff --git a/setup.py b/setup.py index 93360e758..465208f68 100755 --- a/setup.py +++ b/setup.py @@ -64,7 +64,7 @@ def run(self): url="http://hylang.org/", platforms=["any"], classifiers=[ - "Development Status :: 4 - Beta", + "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: DFSG approved", "License :: OSI Approved :: MIT License", # Really "Expat". Ugh. @@ -72,12 +72,6 @@ def run(self): "Programming Language :: Hy", "Programming Language :: Lisp", "Programming Language :: Python", - "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", - "Programming Language :: Python :: 3.10", - "Programming Language :: Python :: 3.11", - "Programming Language :: Python :: 3.12", "Programming Language :: Python :: Implementation :: PyPy", "Environment :: WebAssembly :: Emscripten", "Topic :: Software Development :: Code Generators",