Paul Sokolovsky
0294661da5
parsenum: Signedness issues.
char can be signedness, and using signedness types is dangerous - it can
lead to negative offsets when doing table lookups. We apparently should just
ban char usage.
11 years ago
Paul Sokolovsky
e3cfc0d33d
objstr: Refactor to work with char pointers instead of indexes.
In preparation for unicode support.
11 years ago
Paul Sokolovsky
7ddbd1bee7
unicode: Add trivial implementation of unichar_charlen().
11 years ago
Paul Sokolovsky
b0bb458810
unicode: String API is const byte*.
We still have that char vs byte dichotomy, but majority of string operations
now use byte.
11 years ago
Paul Sokolovsky
2ec38a17d4
objstr: Be 8-bit clean even for repr().
This will allow roughly the same behavior as Python3 for non-ASCII strings,
for example, print("<phrase in non-Latin script>".split()) will print list
of words, not weird hex dump (like Python2 behaves). (Of course, that it
will print list of words, if there're "words" in that phrase at all, separated
by ASCII-compatible whitespace; that surely won't apply to every human
language in existence).
11 years ago
Damien George
c037694957
py, gc: Revert ret_ptr to void*, casting to byte* for memset.
11 years ago
Paul Sokolovsky
e22cddbe2a
stream: Use mp_obj_is_true() for EOF testing.
Getting a length of string may be expensive, depending on the underlying
implementation.
11 years ago
stijn
f33385f56d
gc: Use byte* pointers instead of void* for pointer arithmetic
void* is of unknown size
11 years ago
Damien George
8340c48389
py: Revert change of include, "" back to <> for mpconfigport.h.
11 years ago
Paul Sokolovsky
fbdf2f1d63
py: Rename builtin "io" to "_io".
Functionality we provide in builtin io module is fairly minimal. Some
code, including CPython stdlib, depends on more functionality. So, there's
a choice to either implement it in C, or move it _io, and let implement other
functionality in Python. 2nd choice is pursued. This setup matches CPython
too (_io is builtin, io is Python-level).
11 years ago
Damien George
8a0801ad24
py: Make 3 functions static.
11 years ago
Damien George
73c98d8709
py: Fix static defn in qstr; include mpconfigport.h with "" (not <>).
11 years ago
Paul Sokolovsky
0c0f446840
objfun: Remove no longer used mp_obj_fun_prepare_simple_args().
11 years ago
Paul Sokolovsky
5f4a667ea4
objgenerator: Finish refactor to use mp_setup_code_state().
11 years ago
Paul Sokolovsky
f77d0c5bb3
objgenerator: First iteration of refactor to use mp_setup_code_state().
11 years ago
Paul Sokolovsky
49df795d1d
objfun: Factor out mp_setup_code_state() function to set up code_state object.
It needs to be reused for generator functions, too.
11 years ago
Damien George
58cbb4d661
py: Implement __contains__ special method.
11 years ago
Chris Angelico
1f44e118f0
Remove unnecessary bounds check from mp_seq_get_fast_slice_indexes.
At this point, start will be >= 0, so checking if stop < 0 is redundant with
checking if start > stop a few lines later.
11 years ago
Paul Sokolovsky
195de3247b
objtype: Fix passing of class param to inherited classmethods.
This is getting more and more tangled, but that's old news.
11 years ago
Paul Sokolovsky
639863d36e
objtype: Optimize stack usage mp_obj_class_lookup().
As before, instead of pushing constant values on stack again and again, just
pass around pointer to a structure.
11 years ago
Damien George
049a7a8153
py: Simplify function call of a bytecode object.
11 years ago
Paul Sokolovsky
b4efac14cd
py: Make sure getattr() works with non-interned strings (by interning them).
11 years ago
Paul Sokolovsky
5473f743f3
objtype: Enable __lt__ method support for instances.
11 years ago
Damien George
f0778a7ccb
py: Implement default keyword only args.
Should finish addressing issue #524 .
11 years ago
Paul Sokolovsky
b9b9354e6c
modsys: Add optional support for sys.platform.
Ports which wants to have it, should define MICROPY_PY_SYS_PLATFORM to a
string value they need.
11 years ago
Paul Sokolovsky
7e4a2b0edc
py: Add generic mp_not_implemented() func to use instead of assert().
Benefits: won't crash baremetal targets, will provide Python source location
when not implemented feature used (it will no longer provide C source
location, but just grep for error message).
11 years ago
Damien George
aabd83ea20
py: Merge mp_execute_bytecode into fun_bc_call.
This reduces stack usage by 16 words (64 bytes) for stmhal/ port.
See issue #640 .
11 years ago
Damien George
82ed3d62f6
py, mk: Revert change where build variables set with ?=.
?= operator does not do delayed expansion (unlike =).
11 years ago
Marcus von Appen
0c90eb1658
- FreeBSD provides alloca() via stdlib.h, in contrast to Linux and Windows
- Move the includes for alloca() intp mpconfigport.h
11 years ago
Marcus von Appen
8ffc02495f
- Let the build environment decide about the toolchain to be used, in case
there are special tweaks and paths to be considered. Just provide some
defaults, in case the values are undefined.
- py-version.sh does not need any bash specific features.
- Use libdl only on Linux for now. FreeBSD provides dl*() calls from libc.
11 years ago
Chris Angelico
de09caaa37
Bring the C and Python compute_hash functions into consistency
11 years ago
Paul Sokolovsky
d72bc2713a
objint: Fix corner case in buffer access.
11 years ago
Dave Hylands
b69f9fa31f
Fix str.modulo when precision is specified.
11 years ago
Paul Sokolovsky
380f147d2e
modgc: Real 64-bit cleanness.
11 years ago
Paul Sokolovsky
a3ef8087e8
modgc: 64-bit cleanness.
11 years ago
Paul Sokolovsky
755a55f507
modgc: Implement return value for gc.collect(), enable on Unix.
11 years ago
Damien George
d4c2bddd0c
py: Raise TypeError when trying to format non-int with %x,%o,%X.
This behaviour follows Python 3.5 standard (in 3.4 it's a
DeprecationWarning which we'd rather make a TypeError).
11 years ago
Damien George
11de8399fe
py: Small changes to objstr.c, including a bug fix.
Some small fixed:
- Combine 'x' and 'X' cases in str format code.
- Remove trailing spaces from some lines.
- Make exception messages consistently begin with lower case (then
needed to change those in objarray and objtuple so the same
constant string data could be used).
- Fix bug with exception message having %c instead of %%c.
11 years ago
Chris Angelico
daf973ae00
Change comments (mainly URLs) to no longer specifically say Python 3.3
11 years ago
Paul Sokolovsky
75ce9256b2
objstr: Implement "%(key)s" % {} formatting for strings and dicts.
Also, make sure that args to "*" format specifiers are bounds-checked
properly and don't lead for segfaults in case of mismatch.
11 years ago
Chris Angelico
9ab8ab2117
Replace assert(0) with a self-documenting TODO string
11 years ago
Chris Angelico
4867413e69
Simplify detection of quote characters in mp_str_print_quoted.
Once a double quote has been found, the subsequent discovery of a single quote
won't change behaviour at all, so don't bother looking for one.
11 years ago
Chris Angelico
29bf7393c1
Correct file reference (there's no qstrraw.h)
11 years ago
Damien George
b294a7e3c9
py: Properly fix configuration of float and math module.
11 years ago
Damien George
3f52262465
py: Allow tail call optimisation in mp_call_function_n_kw.
This saves 4 words of stack space per Python call.
11 years ago
Damien George
65ec33200a
py: Fix configuration of math module.
11 years ago
Damien George
bcb6ca4d5e
py: Implement full behaviour of dict.update(), and dict().
Add keyword args to dict.update(), and ability to take a dictionary as
argument.
dict() class constructor can now use dict.update() directly.
This patch loses fast path for dict(other_dict), but is that really
needed? Any anyway, this idiom will now re-hash the dictionary, so is
arguably more memory efficient.
Addresses issue #647 .
11 years ago
Paul Sokolovsky
411732e93b
vm: If there's no lineno info, set lineno in traceback to 0, not 1.
To clearly signify that lineno is not known.
11 years ago
Paul Sokolovsky
b8f117dd32
py: For optimization level -O3 and higher, remove lineno info from bytecode.
11 years ago
Paul Sokolovsky
d3439d0c60
py: Instead of having "debug on" var, have "optimization level" var.
This allows to have multiple "optimization" levels (CPython has two
(-OO removes docstrings), we can have more).
11 years ago