summaryrefslogtreecommitdiff
path: root/py
AgeCommit message (Collapse)Author
2017-12-23Add git version info to frozen modules.Dan Halbert
2017-12-20Don't include examples directories in frozen librariesDan Halbert
2017-12-14Write version info to boot_out.txt.Dan Halbert
2017-10-08Freeze libraries needed by adafruit_circuitplayground library into firmware.Dan Halbert
This saves a lot of RAM. Fixes #287. Also fixed compilation of frozen_mpy.c to use supplied make rule rather than builtin rule (supplied rule suppresses printing out the gcc command line).
2017-09-05py: Only load frozen modules when the filename has the prefix. (#235)Scott Shawcroft
* py: Only load frozen modules when the filename has the prefix. This allows one to override a built-in module by loading a newer version onto the file system. * Unbreak mpys
2017-09-01Fix issue #207, esp8266 file operations problems (#222)Dan Halbert
The frozen module `_boot.py` was not being loaded on restart because `pyexec_frozen_module()` did not know about the new `.frozen` pseudo-directory. Updated lower-level routine to look in the right place. Also made ".frozen" and related values be `#define`s.
2017-08-31py: Add temporary expanded mpy mismatch message for switch to 2.0.0. (#218)Scott Shawcroft
Fixes #214
2017-08-27Modernize module and class static dicts; update freetouchDan Halbert
2017-08-25Initial merge of micropython v1.9.2 into circuitpython 2.0.0 (in ↵Dan Halbert
development) master. cpx build compiles and loads and works in repl; test suite not run yet esp8266 not tested yet
2017-08-23Added ability to freeze multiple directories; freeze neopixel library in cpx ↵Dan Halbert
build (#199) Reworked frozen module support: clean up makefiles and handle multiple directories. Modules to freeze are included as git submodules. Add neopixel to circuitplayground express build. Fixes #56
2017-08-23py/asmthumb: Use existing macro to properly clear the D-cache.Damien George
This macro is provided by stmhal/mphalport.h and makes sure the addr and size arguments are correctly aligned.
2017-08-21py/formatfloat: Don't post-increment variable that won't be used again.Damien George
2017-08-21py/objcomplex: Remove unnecessary assignment of variable.Damien George
2017-08-21py/compile: Remove unused pn_colon code when compiling func params.Damien George
2017-08-21py/mkrules.mk: Use "find -path" when searching for frozen obj files.Damien George
This allows the command to succeed without error even if there is no $(BUILD)/build directory, which is the case for mpy-cross.
2017-08-20py/stream: seek: Consistently handle negative offset for SEEK_SET.Paul Sokolovsky
Per POSIX, this is EINVAL, so raises OSError(EINVAL).
2017-08-20py/objstringio: Fix regression with handling SEEK_SET.Paul Sokolovsky
For SEEK_SET, offset should be treated as unsigned, to allow full-width stream sizes (e.g. 32-bit instead of 31-bit). This is now fully documented in stream.h. Also, seek symbolic constants are added.
2017-08-20py/objstringio: Prevent offset wraparound for io.BytesIO objects.Tom Collins
Too big positive, or too big negative offset values could lead to overflow and address space wraparound and thus access to unrelated areas of memory (a security issue).
2017-08-17py/binary: Change internal bytearray typecode from 0 to 1.Damien George
The value of 0 can't be used because otherwise mp_binary_get_size will let a null byte through as the type code (intepreted as byterray). This can lead to invalid type-specifier strings being let through without an error in the struct module, and even buffer overruns.
2017-08-15py: Add verbose debug compile-time flag MICROPY_DEBUG_VERBOSE.Stefan Naumann
It enables all the DEBUG_printf outputs in the py/ source code.
2017-08-15py/binary.c: Fix bug when packing big-endian 'Q' values.Bas van Sisseren
Without bugfix: struct.pack('>Q', 16) b'\x00\x00\x00\x10\x00\x00\x00\x00' With bugfix: struct.pack('>Q', 16) b'\x00\x00\x00\x00\x00\x00\x00\x10'
2017-08-13all: Raise exceptions via mp_raise_XXXJavier Candeira
- Changed: ValueError, TypeError, NotImplementedError - OSError invocations unchanged, because the corresponding utility function takes ints, not strings like the long form invocation. - OverflowError, IndexError and RuntimeError etc. not changed for now until we decide whether to add new utility functions.
2017-08-11Turn on Rosie CI testing to test new builds on real hardware.Scott Shawcroft
This introduces a skip_if module that can be used by tests to determine when they should be skipped due to the environment. Some tests have been split in order to have finer grained skip control.
2017-08-11py/modsys: Initial implementation of sys.getsizeof().Paul Sokolovsky
Implemented as a new MP_UNARY_OP. This patch adds support lists, dicts and instances.
2017-08-11all: Make use of $(TOP) variable in Makefiles, instead of "..".Damien George
$(TOP) is defined in py/mkenv.mk and should be used to refer to the top level of this repository.
2017-08-10py: Pretend frozen files are stored under .frozen rather than the empty path.Scott Shawcroft
This makes it clear when frozen modules are loaded as opposed to the empty path which represents the current working directory. Furthermore, by splitting the two apart this allows one to control in what order frozen modules are loaded. This is a prerequisite for #56.
2017-08-10py: Remove mpy-cross depend when making frozen mpy's because we don't know ↵Scott Shawcroft
the state under which its being built. Instead, build it before running the subsequent make.
2017-08-09py/objstr: Raise an exception for wrong type on RHS of str binary op.Damien George
The main case to catch is invalid types for the containment operator, of the form str.__contains__(non-str).
2017-08-09py/objtuple: Allow to use inplace-multiplication operator on tuples.Damien George
2017-08-07esp8266: Introduce `multiterminal` module for managing a secondaryScott Shawcroft
serial connection such as WebREPL. Fixes #181.
2017-08-06py/mkrules.mk: Show frozen modules sizes together with executable size.Paul Sokolovsky
This works for Unix and similar ports so far.
2017-08-05Allow max stack checking to be used with -flto build by determining topDan Halbert
of stack in a different way.
2017-08-02py,extmod,stmhal: Use "static inline" for funcs that should be inline.Damien George
"STATIC inline" can expand to "inline" if STATIC is defined to nothing, and this case can lead to link errors.
2017-07-31all: Use the name MicroPython consistently in commentsAlexander Steffen
There were several different spellings of MicroPython present in comments, when there should be only one.
2017-07-31py/modsys: Use MP_ROM_INT for int values in an mp_rom_map_elem_t.Damien George
2017-07-28py/modio: BufferedWriter: Convert to mp_rom_map_elem_t.Paul Sokolovsky
2017-07-25py: Implement raising a big-int to a negative power.Damien George
Before this patch raising a big-int to a negative power would just return 0. Now it returns a floating-point number with the correct value.
2017-07-25py/mpz: Make mpz_is_zero() an inline function.Damien George
It's more efficient as an inline function, and saves code size.
2017-07-24all: Don't include system errno.h when it's not needed.Damien George
2017-07-24py/mperrno: Allow mperrno.h to be correctly included before other hdrs.Damien George
Before this patch the mperrno.h file could be included and would silently succeed with incorrect config settings, because mpconfig.h was not yet included.
2017-07-24py/py.mk: Make berkeley-db C-defs apply only to relevant source files.Damien George
Otherwise they can interfere (eg redefinition of "abort") with other source files in a given uPy port.
2017-07-23Measure and report maximum stack usage. (#175)Dan Halbert
Add max stack usage tracking, visible via debug module ustack. Add separate cpp flag for enabling modules: MICROPY_DEBUG_MODULES
2017-07-21py/builtinevex: Add typechecking of globals/locals args to eval/exec.Tom Collins
2017-07-19all: Remove trailing spaces, per coding conventions.Damien George
2017-07-18py/modmicropython: Cast stack_limit value so it prints correctly.Damien George
Without this cast the print will give a wrong result on nan-boxing builds.
2017-07-18py/asmx64: Support moving a 64-bit immediate to one of top 8 registers.Damien George
If constants (eg mp_const_none_obj) are placed in very high memory locations that require 64-bits for the pointer then the assembler must be able to emit instructions to move such pointers to one of the top 8 registers (ie r8-r15).
2017-07-18py/vm: Make n_state variable local to just set-up part of VM.Damien George
It's not used anywhere else in the VM loop, and clashes with (is shadowed by) the n_state variable that's redeclared towards the end of the mp_execute_bytecode function. Code size is unchanged.
2017-07-18all: Unify header guard usage.Alexander Steffen
The code conventions suggest using header guards, but do not define how those should look like and instead point to existing files. However, not all existing files follow the same scheme, sometimes omitting header guards altogether, sometimes using non-standard names, making it easy to accidentally pick a "wrong" example. This commit ensures that all header files of the MicroPython project (that were not simply copied from somewhere else) follow the same pattern, that was already present in the majority of files, especially in the py folder. The rules are as follows. Naming convention: * start with the words MICROPY_INCLUDED * contain the full path to the file * replace special characters with _ In addition, there are no empty lines before #ifndef, between #ifndef and one empty line before #endif. #endif is followed by a comment containing the name of the guard macro. py/grammar.h cannot use header guards by design, since it has to be included multiple times in a single C file. Several other files also do not need header guards as they are only used internally and guaranteed to be included only once: * MICROPY_MPHALPORT_H * mpconfigboard.h * mpconfigport.h * mpthreadport.h * pin_defs_*.h * qstrdefs*.h
2017-07-16Fix problems that prevented use of internal frozen modules:Dan Halbert
1. Allow -Wlto-type-mismatch to be just a warning when building with frozen modules. 2. Fix extern decls that triggered -Wnested-externs when building with frozen modules. 3. Pass the correct value of -mlongint-impl to $(MPY_TOOL). New file mpconfigport.mk to do this.
2017-07-12py/gc: Refactor assertions in gc_free function.Damien George
gc_free() expects either NULL or a valid pointer into the heap, so the checks for a valid pointer can be turned into assertions.