summaryrefslogtreecommitdiffstatshomepage
path: root/py/runtime.c
Commit message (Collapse)AuthorAge
* py: Put number parsing code together in parsenum.c.Damien George2014-02-22
|
* Support passing positional args as keywords to bytecode functions.Paul Sokolovsky2014-02-16
| | | | | For this, record argument names along with each bytecode function. The code still includes extensive debug logging support so far.
* Make DEBUG_printf() a proper function, implementation is port-dependent.Paul Sokolovsky2014-02-16
| | | | | In particular, unix outputs to stderr, to allow to run testsuite against micropython built with debug output (by redirecting stderr to /dev/null).
* py: Implement *vargs support.Damien George2014-02-16
| | | | Addresses issue #295.
* py: Improve exception bases, reduces ROM usage.Damien George2014-02-15
| | | | Thanks to @pfalcon for the tip!
* py: Pass all scope flags through to runtime.Damien George2014-02-15
|
* Implement proper exception type hierarchy.Damien George2014-02-15
| | | | | | | | | | | | | | Each built-in exception is now a type, with base type BaseException. C exceptions are created by passing a pointer to the exception type to make an instance of. When raising an exception from the VM, an instance is created automatically if an exception type is raised (as opposed to an exception instance). Exception matching (RT_BINARY_OP_EXCEPTION_MATCH) is now proper. Handling of parse error changed to match new exceptions. mp_const_type renamed to mp_type_type for consistency.
* Merge pull request #288 from pfalcon/port-builtinsDamien George2014-02-14
|\ | | | | Allow ports to define statically builtin functions.
| * Allow ports to define statically builtin functions.Paul Sokolovsky2014-02-14
| | | | | | | | Convert unix open() to such.
* | Implement "from module import *" construct.Paul Sokolovsky2014-02-14
|/
* Replace global "static" -> "STATIC", to allow "analysis builds". Part 2.Paul Sokolovsky2014-02-12
|
* Merge branch 'master' of github.com:micropython/micropythonDamien George2014-02-10
|\
| * Add NotImplementedError.Paul Sokolovsky2014-02-09
| |
* | py: Add some qstrs to the global table.Damien George2014-02-08
|/
* py: Put builtins into ROM table.Damien George2014-02-06
| | | | | | | Linear table at the moment, to eventually be replaced with a hash table generated by a preprocessor. Dynamic table is retained so that builtins can be overridden.
* Add staticmethod and classmethod to builtin namespace.Damien George2014-02-06
|
* Merge pull request #262 from pfalcon/sys-pathDamien George2014-02-05
|\ | | | | Implement sys.path support
| * Implement support for sys.path when loading modules.Paul Sokolovsky2014-02-05
| | | | | | | | | | | | | | | | sys.path is not initialized by rt_init(), that's left for platform-specific startup code. (For example, bare metal port may have some hardcoded defaults, and let user change sys.path directly; while port for OS with environment feature can take path from environment). If it's not explicitly initialized, modules will be imported only from a current directory.
* | py: Add built-in super.Damien George2014-02-05
|/
* Use qstr id to create sys module.Paul Sokolovsky2014-02-04
|
* Add ImportError.Paul Sokolovsky2014-02-04
|
* Expose __import__() function.Paul Sokolovsky2014-02-04
|
* py: Implement builtin exec.Damien George2014-02-03
|
* py: Add very basic implementation of dir() builtin.Damien George2014-02-02
| | | | Only works on modules and class instances.
* Merge branch 'xbe-master'Damien George2014-02-02
|\
| * Implement and add tests for the id() builtin function.xbe2014-02-01
| |
* | Merge branch 'master' of github.com:micropython/micropythonDamien George2014-02-02
|\|
| * rt_unpack_sequence(): Support generic iterables.Paul Sokolovsky2014-02-02
| |
* | py: Partially fix native emitter to work with latest runtime.Damien George2014-02-02
|/ | | | | Native emitter has been broken since stack order has changed from reverse to standard. This fix gets it partially working.
* Tidy up some comments.Damien George2014-02-01
|
* py: Tidy up BINARY_OPs; negation done by special NOT bytecode.Damien George2014-02-01
| | | | | IS_NOT and NOT_IN are now compiled to IS + NOT and IN + NOT, with a new special NOT bytecode.
* Implement default function arguments (for Python functions).Paul Sokolovsky2014-02-01
| | | | | | | | TODO: Decide if we really need separate bytecode for creating functions with default arguments - we would need same for closures, then there're keywords arguments too. Having all combinations is a small exponential explosion, likely we need just 2 cases - simplest (no defaults, no kw), and full - defaults & kw.
* py: Simplified rt_call_function_n_kw.Damien George2014-01-31
|
* Fix SIGSEV when running "a"()Markus Siemens2014-01-31
| | | | | | rt_call_function_n_kw did check for integers but not for strings being called. Added a check so running "a"() won't SIGSEV but throw an exception.
* py: Add MICROPY_ENABLE_FLOAT around a float specific piece of code.Damien George2014-01-31
|
* py: Improve __bool__ and __len__ dispatch; add slots for them.Damien George2014-01-30
|
* Implement __bool__ and __len__ via unary_op virtual method for all types.Paul Sokolovsky2014-01-30
| | | | | | | __bool__() and __len__() are just the same as __neg__() or __invert__(), and require efficient dispatching implementation (not requiring search/lookup). type->unary_op() is just the right choice for this short of adding standalone virtual method(s) to already big mp_obj_type_t structure.
* py: Simplify fastn in VM; reduce size of unique code struct.Damien George2014-01-29
| | | | | | | | | | We still have FAST_[0,1,2] byte codes, but they now just access the fastn array (before they had special local variables). It's now simpler, a bit faster, and uses a bit less stack space (on STM at least, which is most important). The only reason now to keep FAST_[0,1,2] byte codes is for compressed byte code size.
* py: Fix bug with LOAD_METHOD; fix int->machine_int_t for small int.Damien George2014-01-29
| | | | | | | | LOAD_METHOD bug was: emitbc did not correctly calculate the amount of stack usage for a LOAD_METHOD operation. small int bug was: int was being used to pass small ints, when it should have been machine_int_t.
* py: Implement 'not' in compiler, and improve rt_is_true.Damien George2014-01-28
|
* Don't pre-import array module.Paul Sokolovsky2014-01-28
|
* py: Add unary op not for NoneType, bool, tuple, list, dict; fix for int.Damien George2014-01-27
|
* Merge branch 'master' of github.com:micropython/micropythonDamien George2014-01-25
|\
| * rt_deinit(): Finalize some maps.Paul Sokolovsky2014-01-25
| |
* | py: Implement iterator support for object that has __getitem__.Damien George2014-01-25
|/ | | | Addresses Issue #203.
* Add basic implementation of bytes type, piggybacking on str.Paul Sokolovsky2014-01-24
| | | | | This reuses as much str implementation as possible, from this we can make them more separate as needed.
* py: Implement bool unary op; tidy up unary op dispatch.Damien George2014-01-23
|
* py: Initialise loaded_module map in rt_init.Damien George2014-01-22
| | | | | STM port crashes without this re-init. There should not be any state in the core py/ code that relies on pre-initialised data.
* Second stage of qstr revamp: uPy str object can be qstr or not.Damien George2014-01-22
|
* Merge branch 'master' of github.com:micropython/micropythonDamien George2014-01-21
|\ | | | | | | | | | | | | | | | | Conflicts: py/objstr.c py/py.mk py/stream.c unix/main.c unix/socket.c