summaryrefslogtreecommitdiff
path: root/CODECONVENTIONS.md
diff options
context:
space:
mode:
Diffstat (limited to 'CODECONVENTIONS.md')
-rw-r--r--CODECONVENTIONS.md210
1 files changed, 0 insertions, 210 deletions
diff --git a/CODECONVENTIONS.md b/CODECONVENTIONS.md
deleted file mode 100644
index a80d5ec92..000000000
--- a/CODECONVENTIONS.md
+++ /dev/null
@@ -1,210 +0,0 @@
-Git commit conventions
-======================
-
-Each commit message should start with a directory or full file path
-prefix, so it was clear which part of codebase a commit affects. If
-a change affects one file, it's better to use path to a file. If it
-affects few files in a subdirectory, using subdirectory as a prefix
-is ok. For longish paths, it's acceptable to drop intermediate
-components, which still should provide good context of a change.
-It's also ok to drop file extensions.
-
-Besides prefix, first line of a commit message should describe a
-change clearly and to the point, and be a grammatical sentence with
-final full stop. First line should fit within 78 characters. Examples
-of good first line of commit messages:
-
- py/objstr: Add splitlines() method.
- py: Rename FOO to BAR.
- docs/machine: Fix typo in reset() description.
- ports: Switch to use lib/foo instead of duplicated code.
-
-After the first line, add an empty line and in following lines describe
-a change in a detail, if needed. Any change beyond 5 lines would likely
-require such detailed description.
-
-To get good practical examples of good commits and their messages, browse
-the `git log` of the project.
-
-MicroPython doesn't require explicit sign-off for patches ("Signed-off-by"
-lines and similar). Instead, the commit message, and your name and email
-address on it construes your sign-off of the following:
-
-* That you wrote the change yourself, or took it from a project with
- a compatible license (in the latter case the commit message, and possibly
- source code should provide reference where the implementation was taken
- from and give credit to the original author, as required by the license).
-* That you are allowed to release these changes to an open-source project
- (for example, changes done during paid work for a third party may require
- explicit approval from that third party).
-* That you (or your employer) agree to release the changes under
- MicroPython's license, which is the MIT license. Note that you retain
- copyright for your changes (for smaller changes, the commit message
- conveys your copyright; if you make significant changes to a particular
- source module, you're welcome to add your name to the file header).
-* Your signature for all of the above, which is the 'Author' line in
- the commit message, and which should include your full real name and
- a valid and active email address by which you can be contacted in the
- foreseeable future.
-
-Python code conventions
-=======================
-
-Python code follows [PEP 8](http://legacy.python.org/dev/peps/pep-0008/).
-
-Naming conventions:
-- Module names are short and all lowercase; eg pyb, stm.
-- Class names are CamelCase, with abbreviations all uppercase; eg I2C, not
- I2c.
-- Function and method names are all lowercase with words separated by
- a single underscore as necessary to improve readability; eg mem_read.
-- Constants are all uppercase with words separated by a single underscore;
- eg GPIO_IDR.
-
-C code conventions
-==================
-
-When writing new C code, please adhere to the following conventions.
-
-White space:
-- Expand tabs to 4 spaces.
-- Don't leave trailing whitespace at the end of a line.
-- For control blocks (if, for, while), put 1 space between the
- keyword and the opening parenthesis.
-- Put 1 space after a comma, and 1 space around operators.
-
-Braces:
-- Use braces for all blocks, even no-line and single-line pieces of
- code.
-- Put opening braces on the end of the line it belongs to, not on
- a new line.
-- For else-statements, put the else on the same line as the previous
- closing brace.
-
-Header files:
-- Header files should be protected from multiple inclusion with #if
- directives. See an existing header for naming convention.
-
-Names:
-- Use underscore_case, not camelCase for all names.
-- Use CAPS_WITH_UNDERSCORE for enums and macros.
-- When defining a type use underscore_case and put '_t' after it.
-
-Integer types: MicroPython runs on 16, 32, and 64 bit machines, so it's
-important to use the correctly-sized (and signed) integer types. The
-general guidelines are:
-- For most cases use mp_int_t for signed and mp_uint_t for unsigned
- integer values. These are guaranteed to be machine-word sized and
- therefore big enough to hold the value from a MicroPython small-int
- object.
-- Use size_t for things that count bytes / sizes of objects.
-- You can use int/uint, but remember that they may be 16-bits wide.
-- If in doubt, use mp_int_t/mp_uint_t.
-
-Comments:
-- Be concise and only write comments for things that are not obvious.
-- Use `// ` prefix, NOT `/* ... */`. No extra fluff.
-
-Memory allocation:
-- Use m_new, m_renew, m_del (and friends) to allocate and free heap memory.
- These macros are defined in py/misc.h.
-
-Examples
---------
-
-Braces, spaces, names and comments:
-
- #define TO_ADD (123)
-
- // This function will always recurse indefinitely and is only used to show
- // coding style
- int foo_function(int x, int some_value) {
- if (x < some_value) {
- foo(some_value, x);
- } else {
- foo(x + TO_ADD, some_value - 1);
- }
-
- for (int my_counter = 0; my_counter < x; my_counter++) {
- }
- }
-
-Type declarations:
-
- typedef struct _my_struct_t {
- int member;
- void *data;
- } my_struct_t;
-
-Documentation conventions
-=========================
-
-MicroPython generally follows CPython in documentation process and
-conventions. reStructuredText syntax is used for the documention.
-
-Specific conventions/suggestions:
-
-* Use `*` markup to refer to arguments of a function, e.g.:
-
-```
-.. method:: poll.unregister(obj)
-
- Unregister *obj* from polling.
-```
-
-* Use following syntax for cross-references/cross-links:
-
-```
-:func:`foo` - function foo in current module
-:func:`module1.foo` - function foo in module "module1"
- (similarly for other referent types)
-:class:`Foo` - class Foo
-:meth:`Class.method1` - method1 in Class
-:meth:`~Class.method1` - method1 in Class, but rendered just as "method1()",
- not "Class.method1()"
-:meth:`title <method1>` - reference method1, but render as "title" (use only
- if really needed)
-:mod:`module1` - module module1
-
-`symbol` - generic xref syntax which can replace any of the above in case
- the xref is unambiguous. If there's ambiguity, there will be a warning
- during docs generation, which need to be fixed using one of the syntaxes
- above
-```
-
-* Cross-referencing arbitrary locations
-~~~
-.. _xref_target:
-
-Normal non-indented text.
-
-This is :ref:`reference <xref_target>`.
-
-(If xref target is followed by section title, can be just
-:ref:`xref_target`).
-~~~
-
-* Linking to external URL:
-```
-`link text <http://foo.com/...>`_
-```
-
-* Referencing builtin singleton objects:
-```
-``None``, ``True``, ``False``
-```
-
-* Use following syntax to create common description for more than one element:
-~~~
-.. function:: foo(x)
- bar(y)
-
- Description common to foo() and bar().
-~~~
-
-
-More detailed guides and quickrefs:
-
-* http://www.sphinx-doc.org/en/stable/rest.html
-* http://www.sphinx-doc.org/en/stable/markup/inline.html
-* http://docutils.sourceforge.net/docs/user/rst/quickref.html