aboutsummaryrefslogtreecommitdiff
path: root/py/py.mk
AgeCommit message (Collapse)Author
2015-12-14py/objpolyiter: Implement instance-polymorphic iterator type.Paul Sokolovsky
This allows to have single itertaor type for various internal iterator types (save rodata space by not having repeating almost-empty type structures). It works by looking "iternext" method stored in particular object instance (should be first object field after "base").
2015-12-13unix: Move modmachine into unix directoryDave Hylands
This leaves behind the common functionality in extmod/machine_mem.c which can be used by all ports.
2015-11-25extmod: Move fsusermount.c from stmhal for cross-port reuse.Paul Sokolovsky
2015-10-27extmod/modlwip: slip: Use stream protocol and be port-independent.Paul Sokolovsky
Based on the original patch by Galen Hazelwood: https://github.com/micropython/micropython/pull/1517 .
2015-10-19all: Make netutils.h available to all ports by default.Paul Sokolovsky
Generally, ports should inherit INC from py.mk, append to it, not overwrite it. TODO: Likely should do the same for other vars too.
2015-10-06modussl: SSL socket wrapper module based on axTLS.Paul Sokolovsky
2015-08-17unix-cpy: Remove unix-cpy. It's no longer needed.Damien George
unix-cpy was originally written to get semantic equivalent with CPython without writing functional tests. When writing the initial implementation of uPy it was a long way between lexer and functional tests, so the half-way test was to make sure that the bytecode was correct. The idea was that if the uPy bytecode matched CPython 1-1 then uPy would be proper Python if the bytecodes acted correctly. And having matching bytecode meant that it was less likely to miss some deep subtlety in the Python semantics that would require an architectural change later on. But that is all history and it no longer makes sense to retain the ability to output CPython bytecode, because: 1. It outputs CPython 3.3 compatible bytecode. CPython's bytecode changes from version to version, and seems to have changed quite a bit in 3.5. There's no point in changing the bytecode output to match CPython anymore. 2. uPy and CPy do different optimisations to the bytecode which makes it harder to match. 3. The bytecode tests are not run. They were never part of Travis and are not run locally anymore. 4. The EMIT_CPYTHON option needs a lot of extra source code which adds heaps of noise, especially in compile.c. 5. Now that there is an extensive test suite (which tests functionality) there is no need to match the bytecode. Some very subtle behaviour is tested with the test suite and passing these tests is a much better way to stay Python-language compliant, rather than trying to match CPy bytecode.
2015-06-11py: Rebuild port if mpconfigport.mk changed (if any).Paul Sokolovsky
mpconfigport.mk contains configuration options which affect the way MicroPython is linked. In this regard, it's "stronger" configuration dependency than even mpconfigport.h, so if we rebuild everything on mpconfigport.h change, we certianly should of that on mpconfigport.mk change too.
2015-05-30py: Wrap qstr defs in quotes to protect from C preprocessor.Damien George
This patch converts Q(abc) to "Q(abc)" to protect the abc from the C preprocessor, then converts back after the preprocessor is finished. So now we can safely put includes in mpconfig(port).h, and also preprocess qstrdefsport.h (latter is now done also in this patch). Addresses issue #1252.
2015-05-05objsingleton: New home for Ellipsis and NotImplemented.Paul Sokolovsky
Having NotImplemented as MP_OBJ_SENTINEL turned out to be problematic (it needs to be checked for in a lot of places, otherwise it'll crash as would pass MP_OBJ_IS_OBJ()), so made a proper singleton value like Ellipsis, both of them sharing the same type.
2015-05-04modmachine: Add new module to access hardware, starting with physical memory.Paul Sokolovsky
Refactored from "stm" module, provides mem8, mem16, mem32 objects with array subscript syntax.
2015-04-28py: Replace py-version.sh with makeversionhdr.py, written in Python.Damien George
Also rename py-version.h to mpversion.h for consistency with mpconfig.h.
2015-04-21py: Add attrtuple object, for space-efficient tuples with attr access.Damien George
If you need the functionality of a namedtuple but will only make 1 or a few instances, then use an attrtuple instead.
2015-04-16py: Overhaul and simplify printf/pfenv mechanism.Damien George
Previous to this patch the printing mechanism was a bit of a tangled mess. This patch attempts to consolidate printing into one interface. All (non-debug) printing now uses the mp_print* family of functions, mainly mp_printf. All these functions take an mp_print_t structure as their first argument, and this structure defines the printing backend through the "print_strn" function of said structure. Printing from the uPy core can reach the platform-defined print code via two paths: either through mp_sys_stdout_obj (defined pert port) in conjunction with mp_stream_write; or through the mp_plat_print structure which uses the MP_PLAT_PRINT_STRN macro to define how string are printed on the platform. The former is only used when MICROPY_PY_IO is defined. With this new scheme printing is generally more efficient (less layers to go through, less arguments to pass), and, given an mp_print_t* structure, one can call mp_print_str for efficiency instead of mp_printf("%s", ...). Code size is also reduced by around 200 bytes on Thumb2 archs.
2015-03-26py, compiler: Remove emit_pass1 code, using emit_bc to do its job.Damien George
First pass for the compiler is computing the scope (eg if an identifier is local or not) and originally had an entire table of methods dedicated to this, most of which did nothing. With changes from previous commit, this set of methods can be removed and the methods from the bytecode emitter used instead, with very little modification -- this is what is done in this commit. This factoring has little to no impact on the speed of the compiler (tested by compiling 3763 Python scripts and timing it). This factoring reduces code size by about 270-300 bytes on Thumb2 archs, and 400 bytes on x86.
2015-02-07py: Protect mp_parse and mp_compile with nlr push/pop block.Damien George
To enable parsing constants more efficiently, mp_parse should be allowed to raise an exception, and mp_compile can already raise a MemoryError. So these functions need to be protected by an nlr push/pop block. This patch adds that feature in all places. This allows to simplify how mp_parse and mp_compile are called: they now raise an exception if they have an error and so explicit checking is not needed anymore.
2015-01-20py: Implement very simple frozen modules support.Paul Sokolovsky
Only modules (not packages) supported now. Source modules can be converted to frozen module structures using tools/make-frozen.py script.
2015-01-07py: Put all global state together in state structures.Damien George
This patch consolidates all global variables in py/ core into one place, in a global structure. Root pointers are all located together to make GC tracing easier and more efficient.
2015-01-01py: Add basic framework for issuing compile/runtime warnings.Paul Sokolovsky
2014-12-29py: Add note about -fno-crossjumping when compiling vm.c.Paul Sokolovsky
2014-12-09py: Allow builtins to be overridden.Damien George
This patch adds a configuration option (MICROPY_CAN_OVERRIDE_BUILTINS) which, when enabled, allows to override all names within the builtins module. A builtins override dict is created the first time the user assigns to a name in the builtins model, and then that dict is searched first on subsequent lookups. Note that this implementation doesn't allow deleting of names. This patch also does some refactoring of builtins code, creating the modbuiltins.c file. Addresses issue #959.
2014-11-29modubinascii: Add, with hexlify() implementation.Paul Sokolovsky
2014-11-27py: Add NLR support for xtensa CPU.Damien George
2014-11-22moduhashlib: Initial module skeleton.Paul Sokolovsky
2014-11-06py: Fix order-only dependencies in mkrules.mk and py.mk.Sven Wegener
Currently compilation sporadically fails, because the automatic dependency gets created *during* the compilation of objects. OBJ is a auperset of PY_O and the dependencies apply to all objects. Signed-off-by: Sven Wegener <sven.wegener@stealer.net>
2014-11-05py: Add order-only dependency for py-version.hSven Wegener
Else the directory might not exist. Signed-off-by: Sven Wegener <sven.wegener@stealer.net>
2014-10-22extmod: Add uheapq module.Damien George
2014-10-13modzlibd: Remove, superceded by moduzlib.Paul Sokolovsky
2014-10-13moduzlib: Integrate into the system.Paul Sokolovsky
2014-10-12modure: Make sure that re1.5 compiled in only of modure itself is enabled.Paul Sokolovsky
This is achieved by including re1.5 *.c files straight from modure.c .
2014-10-11modure: Initial module, using re1.5 (which is based on re1 codebase).Paul Sokolovsky
https://github.com/pfalcon/re1.5
2014-09-17py: Add native json printing using existing print framework.Damien George
Also add start of ujson module with dumps implemented. Enabled in unix and stmhal ports. Test passes on both.
2014-09-07Remove skeletal modselect from extmod and just put it in stmhal.Damien George
2014-09-07stmhal: Implement generic select.select and select.poll.Damien George
2014-09-06py: Add support for emitting native x86 machine code.Damien George
2014-09-04py: Use variable length encoded uints in more places in bytecode.Damien George
Code-info size, block name, source name, n_state and n_exc_stack now use variable length encoded uints. This saves 7-9 bytes per bytecode function for most functions.
2014-08-28py: Move native glue code from runtime.c to new file nativeglue.c.Damien George
This way, the native glue code is only compiled if native code is enabled (which makes complete sense; thanks to Paul Sokolovsky for the idea). Should fix issue #834.
2014-08-27Basic native ARM emitterFabian Vogt
2014-08-13modzlibd: Decompress part of "zlib" module, based on miniz tinfl.c .Paul Sokolovsky
2014-08-12py: Implement builtin reversed() function.Damien George
reversed function now implemented, and works for tuple, list, str, bytes and user objects with __len__ and __getitem__. Renamed mp_builtin_len to mp_obj_len to make it publically available (eg for reversed).
2014-07-19py: Make print() accept "file" argument, and actually print to stream.Paul Sokolovsky
And not system printf(), like it was before. For this, move pfenv_printf() from stmhal port to py/.
2014-07-09moductypes: Foreign data interface module, roughly based on ctype ideas.Paul Sokolovsky
But much smaller and memory-efficient. Uses Python builtin data structures (dict, tuple, int) to describe structure layout.
2014-06-27py: Prune unneeded code from objstrunicode, reuse code in objstr.Paul Sokolovsky
2014-06-27py: Add portable framework to query/check C stack usage.Paul Sokolovsky
Such mechanism is important to get stable Python functioning, because Python function calling is handled with C stack. The idea is to sprinkle STACK_CHECK() calls in places where there can be C recursion. TODO: Add more STACK_CHECK()'s.
2014-05-06modgc: Add new module for GC-related functionality.Paul Sokolovsky
2014-04-26modio: Implement io.StringIO class.Paul Sokolovsky
2014-04-24Makefile: Allow to override "super optimization" options used for some files.Paul Sokolovsky
To help with debugging issue like #510 for example.
2014-04-20py: Add arg checking helper functions.Damien George
These are to assist in writing native C functions that take positional and keyword arguments. mp_arg_check_num is for just checking the number of arguments is correct. mp_arg_parse_all is for parsing positional and keyword arguments with default values.
2014-04-17build: Simplify build directory layout by putting all headers in genhdr.Damien George
Any generated headers go in $(BUILD)/genhdr/, and are #included as 'genhdr/xxx.h'.
2014-04-17Merge branch 'relocatable-build-dir' of github.com:lurch/micropython into ↵Damien George
lurch-relocatable-build-dir