1. 31 Oct, 2015 2 commits
  2. 29 Oct, 2015 1 commit
  3. 11 Oct, 2015 2 commits
  4. 01 Oct, 2015 1 commit
  5. 05 May, 2015 1 commit
  6. 29 Apr, 2015 1 commit
  7. 28 Apr, 2015 2 commits
  8. 19 Apr, 2015 1 commit
  9. 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.
      7f9d1d6a
  10. 13 Feb, 2015 1 commit
  11. 08 Feb, 2015 1 commit
  12. 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.
      0bfc7638
  13. 29 Jan, 2015 1 commit
  14. 28 Jan, 2015 2 commits
  15. 20 Jan, 2015 1 commit
  16. 15 Jan, 2015 1 commit
    • Paul Sokolovsky's avatar
      pyexec: Add event-driven variant pyexec_friendly_repl(). · 87bc8e2b
      Paul Sokolovsky authored
      pyexec_friendly_repl_process_char() and friends, useful for ports which
      integrate into existing cooperative multitasking system.
      
      Unlike readline() refactor before, this was implemented in less formal,
      trial&error process, minor functionality regressions are still known
      (like soft&hard reset support). So, original loop-based pyexec_friendly_repl()
      is left intact, specific implementation selectable by config setting.
      87bc8e2b
  17. 01 Jan, 2015 1 commit
  18. 29 Dec, 2014 1 commit
  19. 20 Dec, 2014 3 commits
  20. 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.
      46c3ab20
  21. 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.
      a4c52c5a
  22. 27 Nov, 2014 1 commit
  23. 26 Oct, 2014 1 commit
    • Damien George's avatar
      stmhal: Improve REPL control codes; improve pyboard.py script. · bc1488a0
      Damien George authored
      Improvements are:
      
      2 ctrl-C's are now needed to truly kill running script on pyboard, so
      make CDC interface allow multiple ctrl-C's through at once (ie sending
      b'\x03\x03' to pyboard now counts as 2 ctrl-C's).
      
      ctrl-C in friendly-repl can now stop multi-line input.
      
      In raw-repl mode, use ctrl-D to indicate end of running script, and also
      end of any error message.  Thus, output of raw-repl is always at least 2
      ctrl-D's and it's much easier to parse.
      
      pyboard.py is now a bit faster, handles exceptions from pyboard better
      (prints them and exits with exit code 1), prints out the pyboard output
      while the script is running (instead of waiting till the end), and
      allows to follow the output of a previous script when run with no
      arguments.
      bc1488a0
  24. 22 Oct, 2014 2 commits
  25. 05 Oct, 2014 2 commits
  26. 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.
      52b5d76a
  27. 20 Jul, 2014 1 commit
  28. 26 Jun, 2014 1 commit
  29. 19 Jun, 2014 1 commit
  30. 16 Jun, 2014 1 commit
  31. 10 May, 2014 1 commit
  32. 03 May, 2014 1 commit
    • Damien George's avatar
      Add license header to (almost) all files. · 04b9147e
      Damien George authored
      Blanket wide to all .c and .h files.  Some files originating from ST are
      difficult to deal with (license wise) so it was left out of those.
      
      Also merged modpyb.h, modos.h, modstm.h and modtime.h in stmhal/.
      04b9147e