Skip to content

Commit d0797fb

Browse files
committed
docs: Add glossary.
We have enough terms or references throughout the docs which may be not immediately clear or have some important nuances. Referencing terms in gloassary is the best way to deal with that.
1 parent d80ecad commit d0797fb

File tree

3 files changed

+104
-0
lines changed

3 files changed

+104
-0
lines changed

docs/reference/glossary.rst

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
Glossary
2+
========
3+
4+
.. glossary::
5+
6+
baremetal
7+
A system without (full-fledged) OS, like an :term:`MCU`. When
8+
running on a baremetal system, MicroPython effectively becomes
9+
its user-facing OS with a command interpreter (REPL).
10+
11+
board
12+
A PCB board. Oftentimes, the term is used to denote a particular
13+
model of an :term:`MCU` system. Sometimes, it is used to actually
14+
refer to :term:`MicroPython port` to a particular board (and then
15+
may also refer to "boardless" ports like
16+
:term:`Unix port <MicroPython Unix port>`).
17+
18+
CPython
19+
CPython is the reference implementation of Python programming
20+
language, and the most well-known one, which most of the people
21+
run. It is however one of many implementations (among which
22+
Jython, IronPython, PyPy, and many more, including MicroPython).
23+
As there is no formal specification of the Python language, only
24+
CPython documentation, it is not always easy to draw a line
25+
between Python the language and CPython its particular
26+
implementation. This however leaves more freedom for other
27+
implementations. For example, MicroPython does a lot of things
28+
differently than CPython, while still aspiring to be a Python
29+
language implementation.
30+
31+
GPIO
32+
General-purpose input/output. The simplest means to control
33+
electrical signals. With GPIO, user can configure hardware
34+
signal pin to be either input or output, and set or get
35+
its digital signal value (logical "0" or "1"). MicroPython
36+
abstracts GPIO access using :class:`machine.Pin` and :class:`machine.Signal`
37+
classes.
38+
39+
GPIO port
40+
A group of :term:`GPIO` pins, usually based on hardware
41+
properties of these pins (e.g. controllable by the same
42+
register).
43+
44+
MCU
45+
Microcontroller. Microcontrollers usually have much less resources
46+
than a full-fledged computing system, but smaller, cheaper and
47+
require much less power. MicroPython is designed to be small and
48+
optimized enough to run on an average modern microcontroller.
49+
50+
micropython-lib
51+
MicroPython is (usually) distributed as a single executable/binary
52+
file with just few builtin modules. There is no extensive standard
53+
library comparable with :term:`CPython`. Instead, there is a related, but
54+
separate project
55+
`micropython-lib <https://github.com/micropython/micropython-lib>`_
56+
which provides implementations for many modules from CPython's
57+
standard library. However, large subset of these modules required
58+
POSIX-like environment (Linux, MacOS, Windows may be partially
59+
supported), and thus would work or make sense only with MicroPython
60+
Unix port. Some subset of modules however usable for baremetal ports
61+
too.
62+
63+
Unlike monolithic :term:`CPython` stdlib, micropython-lib modules
64+
are intended to be installed individually - either using manual
65+
copying or using :term:`upip`.
66+
67+
MicroPython port
68+
MicroPython supports different :term:`boards <board>`, RTOSes,
69+
and OSes, and can be relatively easily adapted to new systems.
70+
MicroPython with support for a particular system is called a
71+
"port" to that system.
72+
73+
MicroPython Unix port
74+
Unix port is one of the major :term:`MicroPython ports <MicroPython port>`.
75+
It is intended to run on POSIX-compatible operating systems, like
76+
Linux, MacOS, FreeBSD, Solaris, etc. It also serves as the basis
77+
of Windows port. The importance of Unix port lies in the fact
78+
that while there are many different :term:`boards <board>`, so
79+
two random users unlikely have the same board, almost all modern
80+
OSes have some level of POSIX compatibility, so Unix port serves
81+
as a kind of "common ground" to which any user can have access.
82+
So, Unix port is used for initial prototyping, different kinds
83+
of testing, development of machine-independent features, etc.
84+
All users of MicroPython, even those which are interested only
85+
in running MicroPython on :term:`MCU` systems, are recommended
86+
to be familiar with Unix (or Windows) port, as it is important
87+
productivity helper and a part of normal MicroPython workflow.
88+
89+
port
90+
Either :term:`MicroPython port` or :term:`GPIO port`. If not clear
91+
from context, it's recommended to use full specification like one
92+
of the above.
93+
94+
upip
95+
(Literally, "micro pip"). A package manage for MicroPython, inspired
96+
by :term:`CPython`'s pip, but much smaller and with reduced functionality.
97+
upip runs both on :term:`Unix port <MicroPython Unix port>` and on
98+
:term:`baremetal` ports (those which offer filesystem and networking
99+
support).

docs/reference/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ implementation and the best practices to use them.
1919
.. toctree::
2020
:maxdepth: 1
2121

22+
glossary.rst
2223
repl.rst
2324
isr_rules.rst
2425
speed_python.rst

docs/templates/topindex.html

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,10 @@ <h1>MicroPython documentation</h1>
8787
</p>
8888
</td>
8989
<td width="40%" style="padding-left:2em;">
90+
<p class="biglink">
91+
<a class="biglink" href="{{ pathto("reference/glossary") }}">Glosssary</a><br/>
92+
<span class="linkdescr">MicroPython terms explained</span>
93+
</p>
9094
<p class="biglink">
9195
<a class="biglink" href="{{ pathto(port + "_index") }}">Table of contents</a><br/>
9296
<span class="linkdescr">a list of all sections and subsections</span>

0 commit comments

Comments
 (0)