Commit Graph

1331 Commits

Author SHA1 Message Date
Damien George 70f33cde48 py: Fix up so that it can compile without float. 2014-04-02 17:06:05 +01:00
Damien George af6edc61bd py: Enable a jump optimisation in the compiler. 2014-04-02 16:12:28 +01:00
Damien George 882b363564 py: Move to Python 3.4.0 compatibility.
Very little has changed.  In Python 3.4 they removed the opcode
STORE_LOCALS, but in Micro Python we only ever used this for CPython
compatibility, so it was a trivial thing to remove.  It also allowed to
clean up some dead code (eg the 0xdeadbeef in class construction), and
now class builders use 1 less stack word.

Python 3.4.0 introduced the LOAD_CLASSDEREF opcode, which I have not
yet understood.  Still, all tests (apart from bytecode test) still pass.
Bytecode tests needs some more attention, but they are not that
important anymore.
2014-04-02 15:56:31 +01:00
Damien George 929a675a3d Change test scripts to use python3; bytecode tests use python3.4.
I upgraded to Python 3.4.0, so needed to make these changes.  Hopefully
the tests still run with Python 3.3.x (the scripts use python3 so are
agnostic as to the subversion).

Bytecode tests are tightly coupled to the Python version, and now some
fail against Python 3.4.
2014-04-02 15:31:39 +01:00
Damien George 4d4a7f5354 Merge branch 'pip-micropy' of github.com:pfalcon/micropython into pfalcon-pip-micropy 2014-04-02 15:14:28 +01:00
Damien George a12be917a4 stmhal: Add timer module; move servo PWM from TIM2 to TIM5.
As per issue #257, servo is better on TIM5 because TIM2 is connected to
more GPIO.
2014-04-02 15:09:36 +01:00
Damien George 69dee59ce4 stmhal: Add backspace key to readline (along with delete key). 2014-04-02 14:28:58 +01:00
Damien George 10e21b9770 Add more tests. 2014-04-02 14:23:04 +01:00
Damien George 93b7faa29a py: Factor out static/class method unwrapping code; add tests. 2014-04-02 14:13:26 +01:00
Damien George e4c834fc1e Add a test. 2014-04-02 13:32:37 +01:00
Damien George b23fbb3126 py: Implement floating point power binop. 2014-04-02 12:26:49 +01:00
Damien George 660aef67c4 py: Allow multiple of str/list/tuple on left by an integer. 2014-04-02 12:22:07 +01:00
Paul Sokolovsky 802d505756 tools: Add pip-micropython to install packages in MicroPython-friendly way. 2014-04-02 12:49:07 +03:00
Damien George 4881566874 py: Add support for sep and end keywords in print. 2014-04-02 10:34:44 +01:00
Damien George 084ef373fb py: Fix math.{ceil,floor,trunc} to return int. 2014-04-01 21:21:50 +01:00
Damien George e3e0500296 py: Make pfenv.c conform to code conventions. 2014-04-01 21:15:03 +01:00
Damien George e8e8f212aa Merge pull request #412 from dhylands/pfenv-strn-stack
Pfenv strn stack
2014-04-01 20:55:27 +01:00
Damien George ef13e2032d Merge pull request #410 from dhylands/fix-led
Fix pyb.Led(n) code to work properly.
2014-04-01 20:52:56 +01:00
Damien George 256afcf9f6 Merge pull request #411 from dhylands/pfenv-64-bit
Fix INT_BUF_SIZE to work with 32-bit and 64-bit
2014-04-01 20:18:14 +01:00
Paul Sokolovsky 380cc53bd9 Merge pull request #408 from dhylands/str-quick-tests
Turn off full tests in string-format.py
2014-04-02 03:13:51 +08:00
Dave Hylands 1c6b4b2e24 Reduce stack usage of pfenv_print_strn 2014-04-01 11:59:31 -07:00
Dave Hylands 80359aa96e Fix INT_BUF_SIZE to work with 32-bit and 64-bit 2014-04-01 11:03:44 -07:00
Dave Hylands 18d21d1abd Fix pyb.Led(n) code to work properly. 2014-04-01 10:41:22 -07:00
Dave Hylands 7adc2e0431 Turn off full tests in string-format.py
Add some basic coverage tests
2014-04-01 08:10:02 -07:00
Paul Sokolovsky 51413c8cb6 tests: Add test for implicit float to int conversion (not allowed!) 2014-04-01 13:50:16 +03:00
Damien George e09320adb5 py: Remove implicit conversion from int to float. 2014-04-01 10:56:07 +01:00
Damien George 46330bd9b5 Merge pull request #407 from dhylands/str-format
Enhance str.format support
2014-04-01 10:48:58 +01:00
Dave Hylands baf6f14deb Enhance str.format support
This adds support for almost everything (the comma isn't currently
supported).

The "unspecified" type with floats also doesn't behave exactly like
python.

Tested under unix with float and double
Spot tested on stmhal
2014-04-01 01:17:33 -07:00
Damien George e44d26ae0c py: Implement __getattr__.
It's not completely satisfactory, because a failed call to __getattr__
should not raise an exception.

__setattr__ could be implemented, but it would slow down all stores to a
user created object.  Need to implement some caching system.
2014-03-31 22:57:56 +01:00
Paul Sokolovsky 4db727afea objstr: Very basic implementation of % string formatting operator. 2014-03-31 21:20:52 +03:00
Paul Sokolovsky 6ce78c4fae py: Wrap .__class__ handling in MICROPY_CPYTHON_COMPAT.
Because it's superfluos in the presence of type(), a remenant from Python's
"old classes".
2014-03-31 20:40:31 +03:00
Paul Sokolovsky b509f73982 objtype: Wrap .__name__ handling in MICROPY_CPYTHON_COMPAT.
Because it's runtime reflection feature, not required for many apps.
Rant time:
Python could really use better str() vs repr() distinction, for example,
repr(type) could be "<class 'foo'>" (as it is now), and str(type) just
"foo". But alas, getting straight name requires adhoc attribute.
2014-03-31 20:40:31 +03:00
Damien George a8dda295c4 Fix part->port in README. 2014-03-31 18:09:39 +01:00
Damien George 30a5f853dd Merge pull request #404 from jonmills/patch-1
Update README.md
2014-03-31 18:09:14 +01:00
Damien George 18a6eb9e13 Merge branch 'master' of github.com:micropython/micropython 2014-03-31 18:03:52 +01:00
Damien George 3ff2d03891 py: Fix bug in optimised for .. range.
Don't store final, failing value to the loop variable.  This fix also
makes for .. range a bit more efficient, as it uses less store/load
pairs for the loop variable.
2014-03-31 18:02:22 +01:00
Paul Sokolovsky 183faa3b13 tests: Add testcase for multiple inheritance. 2014-03-31 19:46:35 +03:00
Damien George 8cd72bdf92 py: Fix vstr_init for case that alloc = 0. 2014-03-31 17:10:59 +01:00
Damien George 43e92cfb52 Merge branch 'master' of github.com:micropython/micropython 2014-03-31 16:28:58 +01:00
Damien George 15d18069c5 py: Remove old "run time" functions that were 1 liners. 2014-03-31 16:28:13 +01:00
Damien George f78b6df192 py: Disable dump_args function call entirely when not debugging.
Yes, I know, a good compiler will optimise this away, but I feel this is
neater.
2014-03-31 15:59:25 +01:00
Paul Sokolovsky e566670153 objtype: Add virtual __name__ attribute.
It's virtual because it's not shown in dir(...). (That's also how CPython
has it).
2014-03-31 17:22:38 +03:00
Paul Sokolovsky 7da0660516 mp_resume: Dare to pass send_value of NULL.
There was thinkos that either send_value or throw_value is specified, but
there were cases with both. Note that send_value is pushed onto generator's
stack - but that's probably only good, because if we throw exception into
gen, it should not ever use send_value, and that will be just extra "assert".
2014-03-31 17:22:37 +03:00
Paul Sokolovsky a2109d9321 mp_resume: Elaborate handling of .throw() for objects which lack it.
In this case, the exception is just re-thrown - the ideas is that object
doesn't handle this exception specially, so it will propagated per Python
semantics.
2014-03-31 17:22:37 +03:00
Paul Sokolovsky 817e76a1a5 objgenerator.throw(GeneratorExit) is not equivalent to .close().
.throw() propagates any exceptions, and .close() swallows them. Yielding
in reponse to .throw(GeneratorExit) is still fatal, and we need to
handle it for .throw() case separately (previously it was handled only
for .close() case).

Obscure corner cases due to test_pep380.py.
2014-03-31 17:22:37 +03:00
Paul Sokolovsky 1eac05d541 objgenerator: Another obscure case of propagating MP_OBJ_NULL optimization. 2014-03-31 17:22:37 +03:00
Damien George e337f1ef5e py: Towards default keyword arguments.
These are default arguments after a bare *.
2014-03-31 15:18:37 +01:00
jon mills aabb314928 Update README.md
Very minor typo
2014-03-31 15:18:22 +01:00
Damien George 1aa2c10263 Merge branch 'master' of github.com:micropython/micropython 2014-03-31 12:01:09 +01:00
Damien George 523b575039 py: Add LOAD_NULL bytecode and use it to simplify function calls.
Adding this bytecode allows to remove 4 others related to
function/method calls with * and ** support.  Will also help with
bytecodes that make functions/closures with default positional and
keyword args.
2014-03-31 11:59:23 +01:00