Paul Sokolovsky
44739e280e
Make DEBUG_printf() a proper function, implementation is port-dependent.
In particular, unix outputs to stderr, to allow to run testsuite against
micropython built with debug output (by redirecting stderr to /dev/null).
11 years ago
Damien George
c5966128c7
Implement proper exception type hierarchy.
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.
11 years ago
Damien George
a71c83a1d1
Change mp_obj_type_t.name from const char * to qstr.
Ultimately all static strings should be qstr. This entry in the type
structure is only used for printing error messages (to tell the type of
the bad argument), and printing objects that don't supply a .print method.
11 years ago
Gordon McGregor
3890ec48e7
OS X compatible -map syntax for LDFLAGS
11 years ago
Paul Sokolovsky
8bc3516389
ffi: Implement ffivar.get()/set() methods.
Done by introducing another factored out helper API in binary.c. This API
can be reused also by array and struct modules.
11 years ago
Paul Sokolovsky
910843e86d
Allow ports to define statically builtin functions.
Convert unix open() to such.
11 years ago
Paul Sokolovsky
5be1b2873b
unix Makefile: Split off optimization options to COPT variable.
To allow easily try different optimization and configuration options
without patching any files.
11 years ago
Paul Sokolovsky
723a6ed371
More GC debugging improvements.
11 years ago
Paul Sokolovsky
e7db8171d8
unix: Implement garbage collection support.
11 years ago
Paul Sokolovsky
287d9620fc
Enable link map file generation.
11 years ago
Paul Sokolovsky
a075741c90
Rename str_join -> strjoin to make it not clash with objstr's one.
11 years ago
Damien George
d46ca25757
Fix some int casting that failed on 64 bit architecture.
11 years ago
Paul Sokolovsky
2e24ee8d80
socket: Tighten up int-to-str conversion.
11 years ago
Paul Sokolovsky
8c25201d9d
socket: Make sure that symbol definitions are const.
11 years ago
Paul Sokolovsky
f766264582
unix: Implement time.sleep().
11 years ago
Paul Sokolovsky
557c9d5264
unix microsocket: Add dummy makefile() method.
Unlike CPython socket, microsocket object already implements stream protocol
(read/write methods), so makefile() just returns object itself. TODO: this
doesn't take care of arguments CPython's makefile() may accept.
11 years ago
Paul Sokolovsky
21c51f0bde
ffi: Fix mp_obj_str_get_data() return type.
11 years ago
Paul Sokolovsky
1e19b24ea0
io.File, socket types: Add fileno() method.
Implementation is duplicated, but tolerate this for now, because there's
no clear idea how to de-dup it.
11 years ago
Paul Sokolovsky
9945f33886
Rename "rawsocket" module to "microsocket".
It's no longer intended to provide just "raw" socket interface, may include
some convenience methods for compatibility with CPython socket - but anyway
just minimal set required to deal with socket client and servers, not wider
network functionality.
11 years ago
Damien George
698ec21e46
Make mp_obj_str_get_data return char* instead of byte*.
Can't decide which is better for string type, char or byte pointer.
Changing to char removes a few casts. Really need to do proper unicode.
11 years ago
Damien George
354d15a964
Implement fixed buffer vstrs; use them for import path.
11 years ago
Damien George
e09ffa1400
Search paths properly on import and execute __init__.py if it exists.
11 years ago
Paul Sokolovsky
9110896063
Remove older import helpers, no longer used.
11 years ago
Paul Sokolovsky
630d85120f
unix: Be sure to add current/base dir of a script to sys.path.
This mirrors CPython behavior and makes possible to run scripts which
import other modules not from script's directory.
11 years ago
Paul Sokolovsky
625d08a93e
unix: Initialize sys.path from MICROPYPATH environment variable.
If it's not available, "~/.micropython/lib:/usr/lib/micropython" is used
as a fallback.
11 years ago
Paul Sokolovsky
0c59db1973
Use qstr id to create sys module.
11 years ago
Paul Sokolovsky
6964422cf4
unix time.clock(): Actually return float value.
11 years ago
Paul Sokolovsky
a9459bc723
unix: Add basic time module (with time() and clock() functions).
Both return int so far (single-precision float doesn't have enough
bits to represent int32 precisely).
11 years ago
Damien George
a908202d60
unix: libffi include path now found using pkg-config.
Hopefully this works for other people as well :)
11 years ago
Paul Sokolovsky
ed1239fce6
Add mpconfigport.mk file to configure which modules to include into build.
Proof of concept, controls "ffi" module as one which requires external
dependencies.
11 years ago
Damien George
62ad189a65
py: Add compile option to enable/disable source line numbers.
11 years ago
Damien George
4d5b28cd08
Add qstr_info() function and bindings for unix port.
11 years ago
Damien George
8bf91f2a87
unix: Fix compile warnings for ffi module on 64-bit machine.
11 years ago
Paul Sokolovsky
60a9fac8d4
unix: Initial implementation of FFI module.
Foreign Function Interface module allows to load native dynamic libraries,
call functions and access variables in them. This makes possible to write
interface modules in pure Python.
This module provides thin wrapper around libffi. ctypes compatibility might
be possible to implement on top of this module (though ctypes allow to call
functions without prototypes, which is not supported by libffi (i.e.
implementation would be inefficient))).
11 years ago
Damien George
56bb636014
Change -Og to -O0 in unix-cpy/Makefile; cast to small int in socket.c.
11 years ago
Paul Sokolovsky
a88c30c64a
unix socket: Add setsockopt() method.
11 years ago
Paul Sokolovsky
5d362d3209
unix socket: Add few more socket constants.
11 years ago
Paul Sokolovsky
db0b282d45
unix socket: Store module constants in data structure.
-147 bytes on x86.
11 years ago
Paul Sokolovsky
e2febe90e3
unix Makefile: -Og doesn't work (at least) with gcc 4.6 below.
Also, don't try to force debug info format, use native.
11 years ago
Damien George
b829b5caec
Implement mp_parse_node_free; print properly repr(string).
11 years ago
Paul Sokolovsky
aee2ba70de
Add parse_node_free_struct() and use it to free parse tree after compilation.
TODO: Check lexer/parse/compile error path for leaks too.
11 years ago
Dave Hylands
c89c681a9f
Rework makefiles. Add proper dependency checking.
11 years ago
Paul Sokolovsky
2b2cb7b7f4
unix main: Free input line.
Also, readline uses system malloc, so for symmetry, use the same for
non-readline case.
11 years ago
Damien George
5fa93b6755
Second stage of qstr revamp: uPy str object can be qstr or not.
11 years ago
Damien George
55baff4c9b
Revamp qstrs: they now include length and hash.
Can now have null bytes in strings. Can define ROM qstrs per port using
qstrdefsport.h
11 years ago
Paul Sokolovsky
51ee44a718
unix file: Refactor and add sys.stdout/stdin/stderr.
11 years ago
Paul Sokolovsky
f0cfb8cb45
Don't preimport socket module.
11 years ago
Paul Sokolovsky
fc35aa6828
unix socket: Add send() and recv() methods.
CPython _socket actually have only those and doesn't provide stream
interface (higher-level CPython "socket" what adds this).
+516 bytes x86.
11 years ago
Paul Sokolovsky
decd597273
unix io.FileIO: Add iteration support.
A file cannot be iterated concurrently, so we make io.FileIO its own
iterator.
11 years ago
Damien George
7d08935458
Rename unix binary to 'micropython'.
11 years ago