summaryrefslogtreecommitdiffstatshomepage
path: root/py
Commit message (Collapse)AuthorAge
* py: Added optimised support for 3-argument calls to builtin.pow()Nicko van Someren2017-02-02
| | | | | | Updated modbuiltin.c to add conditional support for 3-arg calls to pow() using MICROPY_PY_BUILTINS_POW3 config parameter. Added support in objint_mpz.c for for optimised implementation.
* py/objset: Fix inplace binary ops so frozensets are not modified.Damien George2017-02-03
|
* py/objcomplex: Correctly handle case of 0j to power of something.Damien George2017-02-03
| | | | | 0j to the power of negative now raises ZeroDivisionError, and 0j to the power of positive returns 0.
* py/objfloat: Raise ZeroDivisionError for 0 to negative power.Damien George2017-02-03
|
* py/objset: Make inplace binary operators actually modify the set.Damien George2017-02-02
|
* py/objstringio: Allow to specify initial capacity by passing numeric argument.Paul Sokolovsky2017-02-02
| | | | E.g. uio.BytesIO(100) will allocate buffer with 100 bytes of space.
* unix: Make stack be non-executableDave Hylands2017-02-01
| | | | This PR is to address issue #2812.
* extmod: Remove MICROPY_FSUSERMOUNT and related files.Damien George2017-01-30
| | | | Replaced by MICROPY_VFS and the VFS sub-system.
* extmod/vfs_fat: Remove MICROPY_READER_FATFS component.Damien George2017-01-30
|
* extmod/machine_signal: Implement "signal" abstraction for machine module.Paul Sokolovsky2017-01-29
| | | | | | | | | | | A signal is like a pin, but ca also be inverted (active low). As such, it abstracts properties of various physical devices, like LEDs, buttons, relays, buzzers, etc. To instantiate a Signal: pin = machine.Pin(...) signal = machine.Signal(pin, inverted=True) signal has the same .value() and __call__() methods as a pin.
* extmod/vfs: Expose mp_vfs_mount_t type.Damien George2017-01-27
| | | | | It should only be used for low-level things and with caution, for example putting mounted VFS data in ROM or the static data section.
* extmod: Add generic VFS sub-system.Damien George2017-01-27
| | | | | | | | | | | | This provides mp_vfs_XXX functions (eg mount, open, listdir) which are agnostic to the underlying filesystem type, and just require an object with the relevant filesystem-like methods (eg .mount, .open, .listidr) which can then be mounted. These mp_vfs_XXX functions would typically be used by a port to implement the "uos" module, and mp_vfs_open would be the builtin open function. This feature is controlled by MICROPY_VFS, disabled by default.
* py/py.mk: Add CFLAGS_MOD flag to set config file for FatFs.Damien George2017-01-27
|
* py/showbc: Make sure to set the const_table before printing bytecode.Damien George2017-01-27
|
* py/objstr: Optimize string concatenation with empty string.Paul Sokolovsky2017-01-27
| | | | | | | | | | | | | | In this, don't allocate copy, just return non-empty string. This helps with a standard pattern of buffering data in case of short reads: buf = b"" while ...: s = f.read(...) buf += s ... For a typical case when single read returns all data needed, there won't be extra allocation. This optimization helps uasyncio.
* py/objmodule: Move module init/deinit code into runtime functions.Damien George2017-01-26
| | | | | | They are one-line functions and having them inline in mp_init/mp_deinit eliminates the overhead of a function call, and matches how other state is initialised in mp_init.
* py/objint: Fix left-shift overflow in checking for large int.Damien George2017-01-25
|
* py/builtinhelp: Implement help('modules') to list available modules.Damien George2017-01-22
| | | | | | | | This is how CPython does it, and it's very useful to help users discover the available modules for a given port, especially built-in and frozen modules. The function does not list modules that are in the filesystem because this would require a fair bit of work to do correctly, and is very port specific (depending on the filesystem).
* py: Move weak-link map to objmodule.c, and expose module maps as public.Damien George2017-01-22
|
* py: Add builtin help function to core, with default help msg.Damien George2017-01-22
| | | | | This builtin is configured using MICROPY_PY_BUILTINS_HELP, and is disabled by default.
* py/objint_longlong: Add stub for mp_obj_int_from_bytes_impl().Paul Sokolovsky2017-01-21
| | | | To be implemented later.
* py/objint: from_bytes(): Implement "byteorder" param and arbitrary precision.Paul Sokolovsky2017-01-21
| | | | | | | If result guaranteedly fits in a small int, it is handled in objint.c. Otherwise, it is delegated to mp_obj_int_from_bytes_impl(), which should be implemented by individual objint_*.c, similar to mp_obj_int_to_bytes_impl().
* py/mpz: Implement mpz_set_from_bytes() as a foundation for int.from_bytes().Paul Sokolovsky2017-01-21
|
* py/objint_mpz: Refactor switch-statement to remove unreachable default.Damien George2017-01-19
|
* py/formatfloat: Remove unreachable code.Damien George2017-01-19
| | | | | The if-block that this unreachable code is in has a condition "f>=5" so "fp_isless1(f)" will always fail.
* py/binary: mp_binary_get_size: Raise error on unsupported typecodes.Paul Sokolovsky2017-01-17
| | | | | Previouly, we had errors checked in callers, which led to duplicate code or missing checks in some places.
* py/runtime: Refactor default case of switch to remove assert(0).Damien George2017-01-17
|
* py/objexcept: Replace if-cond and assert(0) with simple assert.Damien George2017-01-17
|
* py/emitnative: Remove assert(0)'s or replace with mp_not_implemented.Damien George2017-01-17
|
* py/parse: Refactor code to remove assert(0)'s.Damien George2017-01-17
| | | | | This helps to improve code coverage. Note that most of the changes in this patch are just de-denting the cases of the switch statements.
* py/objgenerator: Don't raise RuntimeError if GeneratorExit ignored.Damien George2017-01-17
| | | | In this case it's allowed to be ignored.
* py/objgenerator: When throwing an object, don't make an exc instance.Damien George2017-01-17
| | | | Arguments to throw() for generators don't need to be exceptions.
* py/runtime: Fix handling of throw() when resuming generator.Damien George2017-01-17
| | | | | | If GeneratorExit is injected as a throw-value then that should lead to the close() method being called, if it exists. If close() does not exist then throw() should not be called, and this patch fixes this.
* py/runtime: Refactor assert(0) to improve coverage.Damien George2017-01-17
|
* py/builtinimport: Remove unreachable code and change obj-import comment.Damien George2017-01-16
|
* py/builtinimport: Raise ValueError for bad relative import, per CPython.Damien George2017-01-16
|
* py/builtinimport: Fix bug when importing names from frozen packages.Damien George2017-01-08
| | | | | | | | The commit d9047d3c8a99603884db25076c37778f50633ca6 introduced a bug whereby "from a.b import c" stopped working for frozen packages. This is because the path was not properly truncated and became "a//b". Such a path resolves correctly for a "real" filesystem, but not for a search in the list of frozen modules.
* py/mkrules.mk: Add MPY_CROSS_FLAGS option to pass flags to mpy-cross.Damien George2017-01-05
| | | | So that ports can pass their own custom options to mpy-cross.
* py/asmarm: Fix assembler's PASS_EMIT constant name.Damien George2017-01-03
|
* py/unicode: Comment-out unused function unichar_isprint.Damien George2016-12-28
|
* py/objint: Simplify mp_int_format_size and remove unreachable code.Damien George2016-12-28
| | | | | One never needs to format integers with a base larger than 16 (but code can be easily extended beyond this value if needed in the future).
* py/mpprint: Add assertion for, and comment about, valid base values.Damien George2016-12-28
|
* py/parsenum: Fix warning for signed/unsigned comparison.Damien George2016-12-28
|
* py/mpz: Fix assertion in mpz_set_from_str which checks value of base.Damien George2016-12-28
|
* py/parsenum: Simplify and generalise decoding of digit values.Damien George2016-12-28
| | | | | This function should be able to parse integers with any value for the base, because it is called by int('xxx', base).
* cc3200: Re-add support for UART REPL (MICROPY_STDIO_UART setting).Paul Sokolovsky2016-12-27
| | | | | | | | UART REPL support was lost in os.dupterm() refactorings, etc. As os.dupterm() is there, implement UART REPL support at the high level - if MICROPY_STDIO_UART is set, make default boot.py contain os.dupterm() call for a UART. This means that changing MICROPY_STDIO_UART value will also require erasing flash on a module to force boot.py re-creation.
* py/misc.h: Typo fix in comment.Paul Sokolovsky2016-12-27
|
* py/lexer: Permanently disable the mp_lexer_show_token function.Damien George2016-12-22
| | | | | The lexer is very mature and this debug function is no longer used. If it's really needed one can uncomment it and recompile.
* py/lexer: Remove unnecessary check for EOF in lexer's next_char func.Damien George2016-12-22
| | | | | | | | This check always fails (ie chr0 is never EOF) because the callers of this function never call it past the end of the input stream. And even if they did it would be harmless because 1) reader.readbyte must continue to return an EOF char if the stream is exhausted; 2) next_char would just count the subsequent EOF's as characters worth 1 column.
* py/lexer: Remove unreachable code in string tokeniser.Damien George2016-12-22
|