summaryrefslogtreecommitdiff
path: root/py
AgeCommit message (Collapse)Author
2017-02-16py/objtuple: Convert mp_uint_t to size_t where appropriate.Damien George
2017-02-16py/persistentcode: Replace mp_uint_t with size_t where appropriate.Damien George
2017-02-16py/mpz: Change type of "base" args from mp_uint_t to unsigned int.Damien George
2017-02-16py/mpz: Remove obsolete declaration of mpz_as_str_size.Damien George
2017-02-16py/mpz: Convert mp_uint_t to size_t where appropriate.Damien George
2017-02-16py/runtime: Convert mp_uint_t to size_t where appropriate.Damien George
2017-02-15py/vm: Add MICROPY_PY_THREAD_GIL_VM_DIVISOR option.Damien George
This improves efficiency of GIL release within the VM, by only doing the release after a fixed number of jump-opcodes have executed in the current thread.
2017-02-15py/modthread: Use system-provided mutexs for _thread locks.Damien George
It's more efficient using the system mutexs instead of synthetic ones with a busy-wait loop. The system can do proper scheduling and blocking of the threads waiting on the mutex.
2017-02-14py/objtype: Replace non-ASCII single-quote char with ASCII version.Damien George
2017-02-10py/emitbc: Produce correct line number info for large bytecode chunks.Damien George
Previous to this patch, for large chunks of bytecode that originated from a single source-code line, the bytecode-line mapping would generate something like (for 42 bytecode bytes and 1 line): BC_SKIP=31 LINE_SKIP=1 BC_SKIP=11 LINE_SKIP=0 This would mean that any errors in the last 11 bytecode bytes would be reported on the following line. This patch fixes it to generate instead: BC_SKIP=31 LINE_SKIP=0 BC_SKIP=11 LINE_SKIP=1
2017-02-09py/objtype: Implement __delattr__ and __setattr__.dmazzella
This patch implements support for class methods __delattr__ and __setattr__ for customising attribute access. It is controlled by the config option MICROPY_PY_DELATTR_SETATTR and is disabled by default.
2017-02-08py/nlr: Fix execstack builds for ARM.Dave Hylands
It seems that the gcc toolchain on the RaspberryPi likes %progbits instead of @progbits. I verified that %progbits also works under x86, so this should fix #2848 and fix #2842 I verified that unix and mpy-cross both compile on my RaspberryPi and on my x64 machine.
2017-02-08py/map: Change mp_uint_t to size_t where appropriate.Damien George
The internal map/set functions now use size_t exclusively for computing addresses. size_t is enough to reach all of available memory when computing addresses so is the right type to use. In particular, for nanbox builds it saves quite a bit of code size and RAM compared to the original use of mp_uint_t (which is 64-bits on nanbox builds).
2017-02-08py/asmxtensa.h: Explicitly cast args to 32-bits so left-shift is legal.Damien George
For archs that have 16-bit pointers, the asmxtensa.h file can give compiler warnings about left-shift being greater than the width of the type (due to the inline functions in this header file). Explicitly casting the constants to uint32_t stops these warnings.
2017-02-04py/objcomplex: Fix typo in ternary expression.Damien George
This typo actually did the correct thing, but it was very obscure (came about from think in terms of Python's "x if cond else y" expression).
2017-02-03py/objstr: Convert some instances of mp_uint_t to size_t.Damien George
2017-02-03py/mpconfig.h: Move PY_BUILTINS_POW3 config option to diff part of file.Damien George
With so many config options it's good to (at least try to) keep them grouped into logical sections.
2017-02-03py/objstr: Give correct behaviour when passing a dict to %-formatting.Damien George
This patch fixes two main things: - dicts can be printed directly using '%s' % dict - %-formatting should not crash when passed a non-dict to, eg, '%(foo)s'
2017-02-02py: Added optimised support for 3-argument calls to builtin.pow()Nicko van Someren
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.
2017-02-03py/objset: Fix inplace binary ops so frozensets are not modified.Damien George
2017-02-03py/objcomplex: Correctly handle case of 0j to power of something.Damien George
0j to the power of negative now raises ZeroDivisionError, and 0j to the power of positive returns 0.
2017-02-03py/objfloat: Raise ZeroDivisionError for 0 to negative power.Damien George
2017-02-02py/objset: Make inplace binary operators actually modify the set.Damien George
2017-02-02py/objstringio: Allow to specify initial capacity by passing numeric argument.Paul Sokolovsky
E.g. uio.BytesIO(100) will allocate buffer with 100 bytes of space.
2017-02-01unix: Make stack be non-executableDave Hylands
This PR is to address issue #2812.
2017-01-30extmod: Remove MICROPY_FSUSERMOUNT and related files.Damien George
Replaced by MICROPY_VFS and the VFS sub-system.
2017-01-30extmod/vfs_fat: Remove MICROPY_READER_FATFS component.Damien George
2017-01-29extmod/machine_signal: Implement "signal" abstraction for machine module.Paul Sokolovsky
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.
2017-01-27extmod/vfs: Expose mp_vfs_mount_t type.Damien George
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.
2017-01-27extmod: Add generic VFS sub-system.Damien George
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.
2017-01-27py/py.mk: Add CFLAGS_MOD flag to set config file for FatFs.Damien George
2017-01-27py/showbc: Make sure to set the const_table before printing bytecode.Damien George
2017-01-27py/objstr: Optimize string concatenation with empty string.Paul Sokolovsky
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.
2017-01-26py/objmodule: Move module init/deinit code into runtime functions.Damien George
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.
2017-01-25py/objint: Fix left-shift overflow in checking for large int.Damien George
2017-01-22py/builtinhelp: Implement help('modules') to list available modules.Damien George
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).
2017-01-22py: Move weak-link map to objmodule.c, and expose module maps as public.Damien George
2017-01-22py: Add builtin help function to core, with default help msg.Damien George
This builtin is configured using MICROPY_PY_BUILTINS_HELP, and is disabled by default.
2017-01-21py/objint_longlong: Add stub for mp_obj_int_from_bytes_impl().Paul Sokolovsky
To be implemented later.
2017-01-21py/objint: from_bytes(): Implement "byteorder" param and arbitrary precision.Paul Sokolovsky
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().
2017-01-21py/mpz: Implement mpz_set_from_bytes() as a foundation for int.from_bytes().Paul Sokolovsky
2017-01-19py/objint_mpz: Refactor switch-statement to remove unreachable default.Damien George
2017-01-19py/formatfloat: Remove unreachable code.Damien George
The if-block that this unreachable code is in has a condition "f>=5" so "fp_isless1(f)" will always fail.
2017-01-17py/binary: mp_binary_get_size: Raise error on unsupported typecodes.Paul Sokolovsky
Previouly, we had errors checked in callers, which led to duplicate code or missing checks in some places.
2017-01-17py/runtime: Refactor default case of switch to remove assert(0).Damien George
2017-01-17py/objexcept: Replace if-cond and assert(0) with simple assert.Damien George
2017-01-17py/emitnative: Remove assert(0)'s or replace with mp_not_implemented.Damien George
2017-01-17py/parse: Refactor code to remove assert(0)'s.Damien George
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.
2017-01-17py/objgenerator: Don't raise RuntimeError if GeneratorExit ignored.Damien George
In this case it's allowed to be ignored.
2017-01-17py/objgenerator: When throwing an object, don't make an exc instance.Damien George
Arguments to throw() for generators don't need to be exceptions.