mirror of
https://github.com/zephyrproject-rtos/zephyr
synced 2025-09-16 15:31:56 +00:00
Zephyr currently requires Python 3.4 or later. The core Python team declared version 3.4 hit End of Life (EOL) in March, so there's no reason to continue to support it if that's causing a burden, which it is. This commit allows Zephyr's Python scripts to depend on features present in version 3.6 or later. This does skip support for a currently active version of Python: - Python 3.5 is actively supported by the core Python devs until 09/2020 - Zephyr's 2.2 release, the first which could include this change, is tentatively scheduled for 02/2020. However, almost all supported platforms are either unaffected, or their users can upgrade easily: - Windows users who need to can upgrade Python with: choco upgrade python - macOS users who need to can upgrade Python with: brew upgrade python3 - Red Hat Enterprise Linux users who need to upgrade can use Software Collections (SCLs), e.g. as described here: https://developers.redhat.com/blog/2018/08/13/install-python3-rhel/ - CentOS Linux users also have access to SCLs, as described here: https://wiki.centos.org/AdditionalResources/Repositories/SCL - Ubuntu's current long-term support (LTS) release (Bionic Beaver, version 18.04) ships with Python 3.6. It and all later versions of Ubuntu won't be affected by this change. - Debian's current stable release (Buster, version 10) ships Python 3.7 and likewise won't be affected. The impact of this change is therefore biggest for older versions of Linux. In particular, these are impacted: - Older Ubuntu LTS releases. - Ubuntu 16.04 ships Python 3.5; it is still supported by Canonical. - Ubuntu 14.04 ships Python 3.4, which is EOL. This Ubuntu version is also no longer getting standard support from Canonical. Paying customers are receiving security updates only. https://wiki.ubuntu.com/Releases - Older Debian versions. - Debian 9 (stretch) ships Python 3.5 and is still a supported Debian version. - Debian 8 (jessie) ships Python 3.4, which is EOL. This Debian version is no longer receiving mainline maintenance by the Debian project. LTS updates are provided by interested community volunteers only. https://wiki.debian.org/LTS Affected Linux users will no longer have a system Python 3 which works "out of the box" with Zephyr after this change. Some ideas for these users are: - Use Zephyr v2.1 or v1.14 LTS, which are maintained and still support Python 3.4 - Compile Python 3.6 or later from source and use it within a venv: https://docs.python.org/3/library/venv.html - Use something like https://github.com/pyenv/pyenv Python 3.6 has compelling new features which make writing Zephyr's scripts easier, and which it would be good to be able to rely upon. This motivates moving from Python 3.4 to 3.6 instead of 3.5. My personal killer 3.6 features motivating skipping 3.5 (YMMV): - Windows console and file system encodings are UTF-8 (PEPs 528 and 529): Zephyr's scripts, and many utilities related to git, broadly assume strings are UTF-8, so this is very helpful - os.PathLike and the file system path protocol (PEP 519) allow intermixing "smart" paths in pathlib with existing os.path based code - f-strings (PEP 0498) are a wonderful and efficient string interpolation mechanism - CPython dictionaries are insertion ordered as an implementation detail starting with 3.6, which in practice helps with reproducibility (and *all* Python implementations have insertion ordered dicts starting with 3.7) Signed-off-by: Martí Bolívar <marti.bolivar@nordicsemi.no> |
||
---|---|---|
.github/ISSUE_TEMPLATE | ||
.known-issues | ||
arch | ||
boards | ||
cmake | ||
doc | ||
drivers | ||
dts | ||
ext | ||
include | ||
kernel | ||
lib | ||
misc | ||
modules | ||
samples | ||
scripts | ||
soc | ||
subsys | ||
tests | ||
.checkpatch.conf | ||
.clang-format | ||
.codecov.yml | ||
.editorconfig | ||
.gitattributes | ||
.gitignore | ||
.gitlint | ||
.mailmap | ||
.shippable.yml | ||
.uncrustify.cfg | ||
CMakeLists.txt | ||
CODE_OF_CONDUCT.md | ||
CODEOWNERS | ||
CONTRIBUTING.rst | ||
Kconfig | ||
Kconfig.zephyr | ||
LICENSE | ||
Makefile | ||
README.rst | ||
VERSION | ||
version.h.in | ||
west.yml | ||
zephyr-env.cmd | ||
zephyr-env.sh |
.. raw:: html <a href="https://www.zephyrproject.org"> <p align="center"> <img src="doc/images/Zephyr-Project.png"> </p> </a> <a href="https://bestpractices.coreinfrastructure.org/projects/74"><img src="https://bestpractices.coreinfrastructure.org/projects/74/badge"></a> <img src="https://api.shippable.com/projects/58ffb2b8baa5e307002e1d79/badge?branch=master"> The Zephyr Project is a scalable real-time operating system (RTOS) supporting multiple hardware architectures, optimized for resource constrained devices, and built with security in mind. The Zephyr OS is based on a small-footprint kernel designed for use on resource-constrained systems: from simple embedded environmental sensors and LED wearables to sophisticated smart watches and IoT wireless gateways. The Zephyr kernel supports multiple architectures, including ARM Cortex-M, Intel x86, ARC, Nios II, Tensilica Xtensa, and RISC-V, and a large number of `supported boards`_. .. below included in doc/introduction/introduction.rst .. start_include_here Getting Started *************** Welcome to Zephyr! See the `Introduction to Zephyr`_ for a high-level overview, and the documentation's `Getting Started Guide`_ to start developing. Community Support ***************** Community support is provided via mailing lists and Slack; see the Resources below for details. .. _project-resources: Resources ********* Here's a quick summary of resources to help you find your way around: * **Help**: `Asking for Help Tips`_ * **Documentation**: http://docs.zephyrproject.org (`Getting Started Guide`_) * **Source Code**: https://github.com/zephyrproject-rtos/zephyr is the main repository; https://elixir.bootlin.com/zephyr/latest/source contains a searchable index * **Releases**: https://zephyrproject.org/developers/#downloads * **Samples and example code**: see `Sample and Demo Code Examples`_ * **Mailing Lists**: users@lists.zephyrproject.org and devel@lists.zephyrproject.org are the main user and developer mailing lists, respectively. You can join the developer's list and search its archives at `Zephyr Development mailing list`_. The other `Zephyr mailing list subgroups`_ have their own archives and sign-up pages. * **Nightly CI Build Status**: https://lists.zephyrproject.org/g/builds The builds@lists.zephyrproject.org mailing list archives the CI (shippable) nightly build results. * **Chat**: Zephyr's Slack workspace is https://zephyrproject.slack.com. Use this `Slack Invite`_ to register. * **Contributing**: see the `Contribution Guide`_ * **Wiki**: `Zephyr GitHub wiki`_ * **Issues**: https://github.com/zephyrproject-rtos/zephyr/issues * **Security Issues**: Email vulnerabilities@zephyrproject.org to report security issues; also see our `Security`_ documentation. Security issues are tracked separately at https://zephyrprojectsec.atlassian.net. * **Zephyr Project Website**: https://zephyrproject.org .. _Slack Invite: https://tinyurl.com/y5glwylp .. _supported boards: http://docs.zephyrproject.org/latest/boards/index.html .. _Zephyr Documentation: http://docs.zephyrproject.org .. _Introduction to Zephyr: http://docs.zephyrproject.org/latest/introduction/index.html .. _Getting Started Guide: http://docs.zephyrproject.org/latest/getting_started/index.html .. _Contribution Guide: http://docs.zephyrproject.org/latest/contribute/index.html .. _Zephyr GitHub wiki: https://github.com/zephyrproject-rtos/zephyr/wiki .. _Zephyr Development mailing list: https://lists.zephyrproject.org/g/devel .. _Zephyr mailing list subgroups: https://lists.zephyrproject.org/g/main/subgroups .. _Sample and Demo Code Examples: http://docs.zephyrproject.org/latest/samples/index.html .. _Security: http://docs.zephyrproject.org/latest/security/index.html .. _Asking for Help Tips: https://docs.zephyrproject.org/latest/guides/getting-help.html