1. 16 Apr, 2015 1 commit
    • Damien George's avatar
      py: Overhaul and simplify printf/pfenv mechanism. · 7f9d1d6a
      Damien George authored
      Previous to this patch the printing mechanism was a bit of a tangled
      mess.  This patch attempts to consolidate printing into one interface.
      All (non-debug) printing now uses the mp_print* family of functions,
      mainly mp_printf.  All these functions take an mp_print_t structure as
      their first argument, and this structure defines the printing backend
      through the "print_strn" function of said structure.
      Printing from the uPy core can reach the platform-defined print code via
      two paths: either through mp_sys_stdout_obj (defined pert port) in
      conjunction with mp_stream_write; or through the mp_plat_print structure
      which uses the MP_PLAT_PRINT_STRN macro to define how string are printed
      on the platform.  The former is only used when MICROPY_PY_IO is defined.
      With this new scheme printing is generally more efficient (less layers
      to go through, less arguments to pass), and, given an mp_print_t*
      structure, one can call mp_print_str for efficiency instead of
      mp_printf("%s", ...).  Code size is also reduced by around 200 bytes on
      Thumb2 archs.
  2. 13 Feb, 2015 1 commit
  3. 07 Feb, 2015 1 commit
    • Damien George's avatar
      py: Protect mp_parse and mp_compile with nlr push/pop block. · 0bfc7638
      Damien George authored
      To enable parsing constants more efficiently, mp_parse should be allowed
      to raise an exception, and mp_compile can already raise a MemoryError.
      So these functions need to be protected by an nlr push/pop block.
      This patch adds that feature in all places.  This allows to simplify how
      mp_parse and mp_compile are called: they now raise an exception if they
      have an error and so explicit checking is not needed anymore.
  4. 15 Jan, 2015 2 commits
  5. 13 Jan, 2015 2 commits
    • Paul Sokolovsky's avatar
      minimal: Convert "bare-arm" port to "minimal" port. · 5ebabcda
      Paul Sokolovsky authored
      This enable libc functions, GC, and line-editing function. Also, UART
      emulation for POSIX systems is added. Emulation build is set as default.
    • Paul Sokolovsky's avatar
      minimal: New port, intended to represent minimal working code. · d511a20a
      Paul Sokolovsky authored
      Unlike bare-arm, which is mostly intended to show raw interpreter size,
      without library and support code dependencies. This port is intended to
      be a better base to start new ports, and also will include emulation
      build to allow debug some aspects of embedded targets on POSIX systems.
      This initial commit is verbatim copy of bare-arm code.
  6. 09 Jan, 2015 1 commit
  7. 07 Jan, 2015 1 commit
  8. 01 Jan, 2015 1 commit
  9. 08 Dec, 2014 1 commit
    • Paul Sokolovsky's avatar
      modsys: Add sys.print_exception(exc, file=sys.stdout) function. · 46c3ab20
      Paul Sokolovsky authored
      The function is modeled after traceback.print_exception(), but unbloated,
      and put into existing module to save overhead on adding another module.
      Compliant traceback.print_exception() is intended to be implemented in
      micropython-lib in terms of sys.print_exception().
      This change required refactoring mp_obj_print_exception() to take pfenv_t
      interface arguments.
      Addresses #751.
  10. 05 Dec, 2014 1 commit
    • Damien George's avatar
      py: Optimise lexer by exposing lexer type. · a4c52c5a
      Damien George authored
      mp_lexer_t type is exposed, mp_token_t type is removed, and simple lexer
      functions (like checking current token kind) are now inlined.
      This saves 784 bytes ROM on 32-bit unix, 348 bytes on stmhal, and 460
      bytes on bare-arm.  It also saves a tiny bit of RAM since mp_lexer_t
      is a bit smaller.  Also will run a bit more efficiently.
  11. 05 Nov, 2014 1 commit
  12. 21 Oct, 2014 1 commit
    • stijn's avatar
      Implement kwargs for builtin open() and _io.FileIO · 2fe4cf77
      stijn authored
      This makes open() and _io.FileIO() more CPython compliant.
      The mode kwarg is fully iplemented.
      The encoding kwarg is allowed but not implemented; mainly to allow
      the tests to specify encoding for CPython, see #874
  13. 05 Oct, 2014 1 commit
  14. 23 Sep, 2014 1 commit
    • Damien George's avatar
      py: Free non-interned strings in the parser when not needed. · 52b5d76a
      Damien George authored
      mp_parse_node_free now frees the memory associated with non-interned
      strings.  And the parser calls mp_parse_node_free when discarding a
      non-used node (such as a doc string).
      Also, the compiler now frees the parse tree explicitly just before it
      exits (as opposed to relying on the caller to do this).
      Addresses issue #708 as best we can.
  15. 04 Aug, 2014 1 commit
  16. 02 May, 2014 1 commit
  17. 12 Apr, 2014 1 commit