Paul Sokolovsky
d0f5e61ab5
py: Implement __file__ attribute for modules.
2014-07-28 21:21:59 +03:00
Paul Sokolovsky
645582fe14
py: Make id() return small int for the most common address space mapping.
...
Many OSes/CPUs have affinity to put "user" data into lower half of address
space. Take advantage of that and remap such addresses into full small int
range (including negative part).
If address is from upper half, long int will be used. Previously, small
int was returned for lower quarter of address space, and upper quarter. For
2 middle quarters, long int was used, which is clearly worse schedule than
the above.
2014-07-28 21:21:59 +03:00
Damien George
adf0f2ae1a
py: Change stream protocol API: fns return uint; is_text for text.
2014-07-27 22:38:58 +01:00
Damien George
ffe911d228
py: Make long ints hashable.
...
Addresses issue #765 .
2014-07-24 14:21:37 +01:00
Paul Sokolovsky
4ecb700fe3
streams: Treat non-error output size as unsigned.
2014-07-23 00:25:46 +03:00
Paul Sokolovsky
e1b1abc1e8
stream: Revert to checking for the correct error value.
2014-07-23 00:23:44 +03:00
Dave Hylands
1d8816c36b
Deal with reading a buffer less than what was allocated.
...
With this fix, file_long_read now passes.
2014-07-21 19:10:10 -07:00
Paul Sokolovsky
cb66f41ebc
py: Make print() accept "file" argument, and actually print to stream.
...
And not system printf(), like it was before. For this, move pfenv_printf()
from stmhal port to py/.
2014-07-19 21:27:22 +03:00
Damien George
1694bc733d
py: Add stream reading of n unicode chars; unicode support by default.
...
With unicode enabled, this patch allows reading a fixed number of
characters from text-mode streams; eg file.read(5) will read 5 unicode
chars, which can made of more than 5 bytes.
For an ASCII stream (ie no chars > 127) it only needs to do 1 read. If
there are lots of non-ASCII chars in a stream, then it needs multiple
reads of the underlying object.
Adds a new test for this case. Enables unicode support by default on
unix and stmhal ports.
2014-07-19 18:34:04 +01:00
Damien George
5467186b0e
py: Remove unnecessary argument in bytearray print.
2014-07-17 21:56:32 +01:00
Paul Sokolovsky
e3737b858a
formatfloat.c: Typo fix in comment.
2014-07-17 20:45:58 +03:00
Damien George
a4022c92f0
py, inline asm: Change "and" op name to "and_" to avoid keyword clash.
...
Addresses issue #753 .
2014-07-17 12:37:56 +01:00
Paul Sokolovsky
ac736f15c9
stream: Factor out mp_stream_write() method to write a memstring to stream.
2014-07-13 23:14:32 +03:00
Paul Sokolovsky
564e46452d
py: Add generic helper to align a pointer.
2014-07-12 15:57:28 +03:00
Paul Sokolovsky
58c9586c34
emitbc: Fix structure field alignment issue.
...
dummy_data field is accessed as uint value (e.g.
in emit_write_bytecode_byte_ptr), but is not aligned as such, which causes
bus errors or incorrect behavior on any arch requiring strictly aligned
data (ARM pre-v7, MIPS, etc, etc).
2014-07-12 15:57:28 +03:00
Paul Sokolovsky
2097c8b1e1
moductypes: Add symbolic constants to specify bitfield position/length.
2014-07-11 00:06:36 +03:00
Paul Sokolovsky
8215847b4d
moductypes: Foreign data interface module, roughly based on ctype ideas.
...
But much smaller and memory-efficient. Uses Python builtin data structures
(dict, tuple, int) to describe structure layout.
2014-07-09 19:28:24 +03:00
Paul Sokolovsky
5fa5ca40e6
binary: Factor out mp_binary_set_int().
2014-07-05 23:54:03 +03:00
Damien George
0182385ab0
py: Automatically ake __new__ a staticmethod.
...
Addresses issue #622 .
2014-07-05 05:55:00 +01:00
Paul Sokolovsky
4e0eeebdc2
py: Implement sys.maxsize, standard way to check platform "bitness".
...
Implementing it as a static constant is a bit peculiar and require cooperation
from long int implementation.
2014-07-03 18:09:36 +03:00
Damien George
381618269a
parser: Convert (u)int to mp_(u)int_t.
2014-07-03 14:13:33 +01:00
Damien George
54eb4e723e
lexer: Convert type (u)int to mp_(u)int_t.
2014-07-03 13:47:47 +01:00
Damien George
40f3c02682
Rename machine_(u)int_t to mp_(u)int_t.
...
See discussion in issue #50 .
2014-07-03 13:25:24 +01:00
Damien George
7a37f647a5
Merge branch 'teensy-new' of github.com:dhylands/micropython into dhylands-teensy-new
...
Conflicts:
stmhal/pin_named_pins.c
stmhal/readline.c
Renamed HAL_H to MICROPY_HAL_H. Made stmhal/mphal.h which intends to
define the generic Micro Python HAL, which in stmhal sits above the ST
HAL.
2014-07-02 13:42:37 +01:00
Damien George
f0b29729aa
py, objexcept: Only check for locked gc if gc is enabled.
2014-07-01 14:28:09 +01:00
Damien George
f065344d3b
Merge branch 'preserve-except' of github.com:dhylands/micropython into dhylands-preserve-except
2014-07-01 14:26:37 +01:00
Dave Hylands
2fe841d2fa
Try not to cause a MemoryError when raising an exception during nterrupt handling.
...
Step 1 fixes #732
2014-06-30 22:49:21 -07:00
Paul Sokolovsky
caa7334141
stackctrl: Add "mp_" prefix.
2014-07-01 02:14:08 +03:00
Damien George
4039a26679
Merge pull request #710 from iabdalkader/assert
...
Fix assert_func warning/error
2014-06-30 09:09:24 +01:00
Damien George
b601d9574a
py: Improvements to native emitter.
...
Native emitter can now compile try/except blocks using nlr_push/nlr_pop.
It probably only works for 1 level of exception handling. It doesn't
work on Thumb (only x64).
Native emitter can also handle some additional op codes.
With this patch, 198 tests now pass using "-X emit=native" option to
micropython.
2014-06-30 05:17:25 +01:00
stijn
ec6fa8732b
windows: Sync mpconfigport.h with the unix' version
...
- rearrange/add definitions that were not there so it's easier to compare both
- use MICROPY_PY_SYS_PLATFORM in main.c since it's available anyway
- define EWOULDBLOCK, it is missing from ingw32
2014-06-29 09:40:20 +02:00
Paul Sokolovsky
9e215fa4c2
py: Make unichar_charlen() accept/return machine_uint_t.
2014-06-28 23:15:29 +03:00
Damien George
8546ce1e28
py: Add missing #endif.
2014-06-28 10:29:22 +01:00
Damien George
e04a44e2f6
py: Small comments, name changes, use of machine_int_t.
2014-06-28 10:27:23 +01:00
Damien George
b3a50f0f3e
Merge branch 'master' into unicode
...
Conflicts:
py/mpconfig.h
2014-06-28 10:27:15 +01:00
Paul Sokolovsky
8993fb6cf0
py: Add protection against printing too nested or recursive data structures.
...
With a test which cannot be automatically validated so far.
2014-06-28 02:25:04 +03:00
Paul Sokolovsky
cb78f862cb
py: Allow to disable array module and bytearray type.
...
array.array and bytearray share big deal of code, so to get real savings,
both need to be disabled.
2014-06-27 21:02:04 +03:00
Paul Sokolovsky
8a96ebea75
py: Move stack_ctrl_init() to mp_init().
...
As stack checking is enabled by default, ports which don't call
stack_ctrl_init() are broken now (report RuntimeError on startup). Save
them trouble and just init stack control framework in interpreter init.
2014-06-27 21:02:04 +03:00
Paul Sokolovsky
f5f6c3b792
streams: Reading by char count from unicode text streams is not implemented.
2014-06-27 00:04:20 +03:00
Paul Sokolovsky
ce81312d8a
misc: Add count_lead_ones() function, useful for UTF-8 handling.
2014-06-27 00:04:20 +03:00
Paul Sokolovsky
ea2c936c7e
objstrunicode: Refactor str_index_to_ptr() following objstr.
2014-06-27 00:04:20 +03:00
Paul Sokolovsky
26fda6dc8e
objstr: 64-bit issues.
2014-06-27 00:04:19 +03:00
Paul Sokolovsky
00c904b47a
objstrunicode: Signedness issues.
2014-06-27 00:04:19 +03:00
Paul Sokolovsky
1044c3dfe6
unicode: Make get_char()/next_char()/charlen() be 8-bit compatible.
...
Based on config define.
2014-06-27 00:04:19 +03:00
Paul Sokolovsky
5048df0b7c
objstr: find(), rfind(), index(): Make return value be unicode-aware.
2014-06-27 00:04:19 +03:00
Paul Sokolovsky
46d31e9ca9
unicode: Add utf8_ptr_to_index().
...
Useful when we have pointer to char inside string, but need to return char
index. (E.g. str.find()).
2014-06-27 00:04:19 +03:00
Paul Sokolovsky
ded0fc77f7
py: Add dedicated unicode header.
2014-06-27 00:04:19 +03:00
Paul Sokolovsky
79b7fe2ee5
objstrunicode: Implement iterator.
2014-06-27 00:04:19 +03:00
Paul Sokolovsky
cdc020da4b
objstrunicode: Re-add buffer protocol back for now, required for io.StringIO.
2014-06-27 00:04:18 +03:00
Paul Sokolovsky
e7f2b4c875
objstrunicode: Revamp len() handling for unicode, and optimize bool().
2014-06-27 00:04:18 +03:00