Paul Sokolovsky
7917b731f6
objfun: More debug logging.
2014-05-01 23:22:11 +03:00
Paul Sokolovsky
5ba58f4a1a
objgenerator: Fix check for too few args passed to gen function.
2014-05-01 23:22:11 +03:00
Paul Sokolovsky
c3103b55c1
objgenerator: .print(): Output real underlying function name.
2014-05-01 23:22:11 +03:00
Andrew Scheller
37067666ee
Fix the builtin min() and max() functions (and add tests).
...
Fixes #539
2014-05-01 21:21:43 +01:00
Paul Sokolovsky
d32bab27bb
py: Add copyright/license header to each file.
2014-05-01 02:54:16 +03:00
Paul Sokolovsky
1f85d6255d
py: Add tentative scheme for error messages configuration.
2014-05-01 01:50:35 +03:00
Paul Sokolovsky
68551a8428
objfun: Add function name accessor and .print slot method.
2014-05-01 01:50:35 +03:00
Damien George
37977b7b27
Merge pull request #528 from pfalcon/native-subclass1
...
Initial support for subclassing native types
2014-04-30 21:02:50 +01:00
Paul Sokolovsky
22d0598818
objfun: Factor out function to report positional args mismatch.
2014-04-30 05:37:28 +03:00
Paul Sokolovsky
e908591baa
py: Abstract no-return attribute for functions a bit.
2014-04-30 05:35:18 +03:00
Paul Sokolovsky
b1ce37d32e
py: If setjmp NLR implementation is forced, omit native versions.
2014-04-30 04:19:20 +03:00
Paul Sokolovsky
851c856585
nlr.h: As we treat all warnings as errors, can't use #warning.
...
And this is not good.
2014-04-30 04:14:31 +03:00
Paul Sokolovsky
7f0419c0e5
objtype: Support calling normal methods inherited from native base class.
...
Biggest part of this support is refactoring mp_obj_class_lookup() to return
standard "bound member" pair (mp_obj_t[2]). Actual support of inherited
native methods is 3 lines then. Some inherited features may be not supported
yet (e.g. native class methods, native properties, etc., etc.). There may
be opportunities for further optimization too.
2014-04-30 02:14:30 +03:00
Paul Sokolovsky
443857de98
objtype: Add support for looking up non-method attrs in native base class.
2014-04-29 20:31:13 +03:00
Paul Sokolovsky
6ead0d2fbc
objtype: Implement basic framework for subclassing native types.
...
This implements checking of base types, allocation and basic initialization,
and optimized support for special method lookups. Other features are not yet
supported.
2014-04-29 20:31:13 +03:00
Damien George
186e463a9e
py: Fix bug in map lookup of interned string vs non-interned.
...
Had choice of either interning or forcing full equality comparison, and
chose latter. See comments in mp_map_lookup.
Addresses issue #523 .
2014-04-28 12:11:57 +01:00
Damien George
185f9c1c46
py: Fix lexerunix, where not all data may be read from a file.
...
Addresses issue #526 .
2014-04-28 11:43:28 +01:00
Damien George
0c8fcb9c49
py: Remove silly comment about interning keywords.
...
Of course, keywords are turned into lexer tokens in the lexer, so will
never need to be interned (unless you do something like x="def").
As it is now, the following on pyboard makes no new qstrs:
import pyb
pyb.info()
2014-04-28 09:56:31 +01:00
Paul Sokolovsky
a224067846
py: Clear allocated, but unused memory in containers.
...
Also, clear up freed slots in containers.
As a follow up to 32bef315be
.
2014-04-28 00:33:21 +03:00
Paul Sokolovsky
7ce6a8fe46
objlist: We no longer need to assert on mem alloc results.
...
They either succeed or raise exception.
2014-04-28 00:33:21 +03:00
Paul Sokolovsky
48bf6b3bd0
objlist: Use static small int constructor.
2014-04-28 00:33:21 +03:00
Damien George
708c073250
py: Add '*' qstr for 'import *'; use blank qstr for comprehension arg.
2014-04-27 19:23:46 +01:00
Damien George
968bf34c4c
py: Remove unnecessary LOAD_CONST_ID bytecode.
...
It's the same as LOAD_CONST_STR.
2014-04-27 19:12:05 +01:00
Damien George
db12891918
py: Eliminate 'op' variable in VM dispatch loop.
...
Remembering the last op is rarely needed, and when it is, can simply use
*save_ip.
2014-04-27 18:19:06 +01:00
Damien George
9d181f62dc
py: Save some ROM by shortening compiler error messages.
...
Messages are still explanatory, while taking a little less ROM.
2014-04-27 16:55:27 +01:00
Damien George
2c0842b3c5
py: Change the way function arguments are compiled.
...
New way uses slightly less ROM and RAM, should be slightly faster, and,
most importantly, allows to catch the error "non-keyword arg following
keyword arg".
Addresses issue #466 .
2014-04-27 16:46:51 +01:00
Damien George
2827d62e8b
py: Implement keyword-only args.
...
Implements 'def f(*, a)' and 'def f(*a, b)', but not default
keyword-only args, eg 'def f(*, a=1)'.
Partially addresses issue #524 .
2014-04-27 15:50:52 +01:00
Damien George
36cbd0db7e
Merge branch 'master' of github.com:micropython/micropython
2014-04-26 22:24:45 +01:00
Damien George
32bef315be
py, gc: Only zero out the extra bytes at the end of the heap chunk.
...
This is a small optimisation to zero out only the additional bytes that
the caller did not ask for.
2014-04-26 22:23:42 +01:00
Paul Sokolovsky
27f5bdd6d4
py: "read" & "write" are so common that make them core.
...
Few other strings move to core, but make depend on "io" module.
2014-04-26 21:15:56 +03:00
Paul Sokolovsky
100cd36a0e
objstringio: Compile only if MICROPY_ENABLE_MOD_IO defined.
2014-04-26 20:59:39 +03:00
Paul Sokolovsky
cb9dc086a3
modio: Implement io.StringIO class.
2014-04-26 20:26:14 +03:00
Damien George
dbc81df5d4
Simplify names for argcheck.c / arg parsing.
2014-04-26 11:19:17 +01:00
Damien George
6d3c5e4301
Add ARRAY_SIZE macro, and use it where possible.
2014-04-26 10:47:29 +01:00
Damien George
d139c489ba
Merge branch 'master' of github.com:micropython/micropython
2014-04-26 10:31:58 +01:00
Damien George
107c9fb235
py: Make collections module configurable, enabled by default.
2014-04-26 10:31:15 +01:00
Paul Sokolovsky
e14d096cb7
objstr: Optimize .rstrip() by scanning string from end.
2014-04-26 06:48:31 +03:00
Paul Sokolovsky
881078403e
objstr: Implement .lstrip() & .rstrip().
...
Share code with .strip(). TODO: optimize .rstrip().
2014-04-26 06:20:08 +03:00
Paul Sokolovsky
45fb143ba6
streams: Make .write() support arbitrary objects with buffer interface.
...
This in particular fixes writing str vs bytes.
2014-04-26 05:54:16 +03:00
Damien George
1463c1fa82
py: Add MICROPY_ENABLE_DOC_STRING, disabled by default.
...
Also add a few STATIC's to some compile functions that should have them.
Addresses issue #521 .
2014-04-25 23:52:57 +01:00
Damien George
c492cf1f44
Merge branch 'master' of github.com:micropython/micropython
2014-04-25 23:45:52 +01:00
Damien George
daab651c5c
py, gc: Zero out newly allocated blocks in the GC.
...
Also add some more debugging output to gc_dump_alloc_table().
Now that newly allocated heap is always zero'd, maybe we just make this
a policy for the uPy API to keep it simple (ie any new implementation of
memory allocation must zero all allocations). This follows the D
language philosophy.
Before this patch, a previously used memory block which had pointers in
it may still retain those pointers if the new user of that block does
not actually use the entire block. Eg, if I want 5 blocks worth of
heap, I actually get 8 (round up to nearest 4). Then I never use the
last 3, so they keep their old values, which may be pointers pointing to
the heap, hence preventing GC.
In rare (or maybe not that rare) cases, this leads to long, unintentional
"linked lists" within the GC'd heap, filling it up completely. It's
pretty rare, because you have to reuse exactly that memory which is part
of this "linked list", and reuse it in just the right way.
This should fix issue #522 , and might have something to do with
issue #510 .
2014-04-25 23:37:55 +01:00
Paul Sokolovsky
755565d2cb
py: Support instance __call__ method.
2014-04-25 21:17:42 +03:00
Damien George
410f30772f
py, gc: Fix old gc_realloc for case when NULL is passed in as ptr.
2014-04-25 11:44:53 +00:00
Damien George
c0dc7c3dfa
py, vm: Fix recent bug where state is freed too early.
2014-04-24 15:42:05 +01:00
Damien George
d5e8482c4a
py, vm: Free heap-allocated state if it was allocated on the heap.
2014-04-24 13:52:06 +01:00
Damien George
978939156d
Merge pull request #519 from pfalcon/exc-no-ptr-to-field
...
objexcept: Don't store args tuple within exception object.
2014-04-24 11:14:18 +01:00
Damien George
1cbb99d1db
Merge pull request #518 from pfalcon/vm-trace
...
vm: Add rudimentary bytecode execution tracing capability.
2014-04-24 11:06:10 +01:00
Paul Sokolovsky
1c1d902cd3
Makefile: Allow to override "super optimization" options used for some files.
...
To help with debugging issue like #510 for example.
2014-04-24 02:59:43 +03:00
Paul Sokolovsky
1acf22f17b
objexcept: Don't store args tuple within exception object.
...
To avoid pointer-to-field GC problem.
2014-04-23 04:07:00 +03:00
Paul Sokolovsky
c5e32c6995
vm: Add rudimentary bytecode execution tracing capability.
2014-04-23 03:46:00 +03:00
Paul Sokolovsky
4c6b375960
showbc: MAKE_CLOSURE*: Update for new closed-over encoding.
2014-04-23 03:23:39 +03:00
Paul Sokolovsky
5e3e2d00ea
emitglue: Typo fix in var name.
2014-04-23 03:23:32 +03:00
Paul Sokolovsky
20e9ed3916
builtinimport: If there was error compiling imported module, raise exception.
2014-04-22 02:53:20 +03:00
Paul Sokolovsky
dec31bb872
objexcept: Add mp_obj_new_exception_arg1() convenience function.
2014-04-22 00:02:51 +03:00
Damien George
e5f8a77db6
py: Add 'align' and 'data' meta-instructions to inline assembler.
2014-04-21 13:33:15 +01:00
Damien George
806f4aef9a
py: Fix super() bug, where it didn't allow instance access.
...
This is a one-liner fix. It gets the class-super.py test passing, but
is probably not a complete fix.
2014-04-21 02:11:07 +01:00
Damien George
0ae21a81f7
Merge branch 'master' of github.com:micropython/micropython
2014-04-21 01:18:05 +01:00
Damien George
64ba6ca127
py: Small change to mp_arg_parse_all.
2014-04-21 00:09:44 +01:00
Paul Sokolovsky
353b0289f3
py: Add win32-specific header for alloca().
2014-04-20 22:24:44 +03:00
Paul Sokolovsky
41809a1ced
nlrx86.S: Another ifdef for win32 symbol underscoring issues.
2014-04-20 22:24:44 +03:00
Paul Sokolovsky
26905259d0
objarray: Slice subscription operation: properly test for op subtype.
...
Also, checked that both bytearray and array.array actually support generic
(a-la list) slice assignment and deletion. Added TODOs.
2014-04-20 20:58:33 +03:00
Paul Sokolovsky
5b991ae2d3
gc: gc_realloc(): Fix byte-to-block calculation.
2014-04-20 20:46:39 +03:00
Damien George
dde739d364
py, gc: Further simplify coding-style of gc_realloc.
...
No logic changes, just coding style to make it easy to read.
2014-04-20 18:16:25 +01:00
Damien George
5f6a25fc50
py: Wrap #if's around emitter functions that are used only by emitcpy.
...
3 emitter functions are needed only for emitcpy, and so we can #if them
out when compiling with emitcpy support.
Also remove unused SETUP_LOOP bytecode.
2014-04-20 18:02:27 +01:00
Damien George
3558f62fb5
py: Making closures now passes pointer to stack, not a tuple for vars.
...
Closed over variables are now passed on the stack, instead of creating a
tuple and passing that. This way memory for the closed over variables
can be allocated within the closure object itself. See issue #510 for
background.
2014-04-20 17:50:40 +01:00
Paul Sokolovsky
bc5f0c1977
objclosure: Store reference to entire closed variables tuple.
...
Avoids pointer-to-field garbage collection issue. Fixes #510 .
2014-04-20 13:08:33 +03:00
Paul Sokolovsky
2758b7d3e2
objcell: Add disabled by default print method for debugging.
2014-04-20 13:08:33 +03:00
Paul Sokolovsky
c86889dafb
gc: "new" gc_realloc: Rewrite in plain C, fixing bunch of bugs.
...
There were typos, various rounding errors trying to do concurrent counting
in bytes vs blocks, complex conditional paths, superfluous variables, etc.,
etc., all leading to obscure segfaults.
2014-04-20 13:08:33 +03:00
Paul Sokolovsky
ed162b5ef2
gc: Recover simple gc_realloc implementation, make easier to switch between.
2014-04-20 13:08:33 +03:00
Paul Sokolovsky
0f836ef893
modstruct: Add 'O' typecode for passing mp_obj_t.
...
Useful as callback data, etc.
2014-04-20 13:08:33 +03:00
Paul Sokolovsky
4e4fa94c4c
modstruct: Use proper int accessor which checks input value type.
2014-04-20 13:08:33 +03:00
Damien George
53775026e7
Merge branch 'master' of github.com:micropython/micropython
2014-04-20 01:26:25 +01:00
Damien George
f87b35e779
py: Fix mp_arg_parse_all.
2014-04-20 01:25:15 +01:00
Damien George
a3f94e0030
py: Add arg checking helper functions.
...
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-20 00:13:22 +01:00
Paul Sokolovsky
d6e12723ed
objarray: Implement slice subscription.
2014-04-19 20:06:57 +03:00
Paul Sokolovsky
6204460461
modstruct: Initial implementation of struct.pack().
2014-04-19 03:22:08 +03:00
Paul Sokolovsky
504e23388c
objstr: Init hash in mp_obj_str_builder_start() to 0.
2014-04-19 03:21:06 +03:00
Paul Sokolovsky
4602b9a79f
obj.h: Typo fix in comment.
2014-04-19 03:21:06 +03:00
Paul Sokolovsky
1355cf42f2
modstruct: Fix .calcsize() to account for struct type/alignment.
2014-04-19 03:21:06 +03:00
Paul Sokolovsky
5695e07256
modstruct: Support 'q' & 'Q' type codes.
2014-04-19 03:18:14 +03:00
Damien George
561f83c9cf
Merge branch 'master' of github.com:micropython/micropython
2014-04-18 23:35:24 +01:00
Damien George
71e9bfa20d
py: Add mp_binary_set_val_array_from_int, to store an int directly.
2014-04-18 23:28:12 +01:00
Damien George
b11b85adaa
py: Allow to pass buffer protocol flags to get_buffer helper funcs.
2014-04-18 22:59:24 +01:00
Damien George
57a4b4f178
py: Add typecode to buffer protocol.
...
When querying an object that supports the buffer protocol, that object
must now return a typecode (as per binary.[ch]). This does not have to
be honoured by the caller, but can be useful for determining element
size.
2014-04-18 22:29:21 +01:00
Damien George
3fd2d7fad2
py: Tidy up function argument error messages.
...
We are not as verbose as CPython, and maybe a bit too cryptic sometimes.
2014-04-18 22:06:55 +01:00
Damien George
32ca164992
py: Tidy up array.array; add more error handling.
2014-04-18 22:04:06 +01:00
Paul Sokolovsky
0fc4775cd6
sequence: Further simplify sequence comparison.
2014-04-18 21:47:58 +03:00
Paul Sokolovsky
83eba5dec5
sequence: Fix glaring bug in sequence comparison.
2014-04-18 21:42:54 +03:00
Paul Sokolovsky
7de5377ca7
objfloat: Try to achieve the same float printing format as CPython does.
...
Test usecase I used is print(time.time()) and print(time.time() - time.time()).
On Linux/Glibc they now give the same output as CPython 3.3. Specifically,
time.time() gives non-exponential output with 7 decimal digits, and subtraction
gives exponential output e-06/e-07.
2014-04-18 21:21:59 +03:00
Damien George
90edf9e13b
inlinethumb: Add wfi, cpsid and cpsie instructions.
2014-04-18 16:56:54 +01:00
Paul Sokolovsky
599bbc111c
py: from import * should not import symbols starting with underscore.
...
I skipped implementing this initially, but then it causes __name__
of current module be overwritten and relative imports fail.
2014-04-18 04:20:17 +03:00
Damien George
5b65f0c7d3
py: Rename USE_COMPUTED_GOTOS to USE_COMPUTED_GOTO and enable on stmhal.
...
On stmhal, computed gotos make the binary about 1k bigger, but makes it
run faster, and we have the room, so why not. All tests pass on
pyboard using computed gotos.
2014-04-17 23:24:13 +01:00
Damien George
ea8d06c39d
py: Add MP_OBJ_STOP_ITERATION and make good use of it.
...
Also make consistent use of MP_OBJ_NOT_SUPPORTED and MP_OBJ_NULL.
This helps a lot in debugging and understanding of function API.
2014-04-17 23:19:36 +01:00
Damien George
729f7b42d6
py: Merge BINARY_OP_SUBSCR and store_subscr (w/ delete) into subscr.
...
mp_obj_t->subscr now does load/store/delete.
2014-04-17 22:10:53 +01:00
Damien George
de7c425139
py: Simplify objfun/objgenerator connection, no need to call bc_get.
2014-04-17 19:16:11 +01:00
Damien George
d89b69eb3a
Merge branch 'master' of github.com:micropython/micropython
2014-04-17 18:58:46 +01:00
Damien George
d0f9f6cd3f
py: Fix pfenv_print_strn to return correct number of chars printed.
...
With this fix, all tests in tests/basics pass on pyboard.
2014-04-17 18:58:09 +01:00
Paul Sokolovsky
b7e90ea078
objgenerator: Generator must execute in its defining lexical context.
...
I.e. with its own globals. So, just as for functions, we need to switch
globals when resuming a generator.
2014-04-17 20:27:00 +03:00
Paul Sokolovsky
f26a30710c
objfun: Add local header.
...
This follows pattern already used for objtuple, etc.: objfun.h's content
is not public - each and every piece of code should not have access to it.
It's not private either - with out architecture and implementation language
(C) it doesn't make sense to keep implementation of each object strictly
private and maintain cumbersome accessors. It's "local" - intended to be
used by a small set of "friend" (in C++ terms) objects.
2014-04-17 20:27:00 +03:00