1. 17 Jul, 2021 2 commits
  2. 01 Jul, 2021 11 commits
  3. 12 Jun, 2021 3 commits
    • Daniel Kochmański's avatar
      Merge branch 'finalizer-cycles' into 'develop' · 0aa627e3
      Daniel Kochmański authored
      gc: call finalizer for builtin object only when the object is truly unreachable
      
      See merge request embeddable-common-lisp/ecl!252
      0aa627e3
    • Marius Gerbershagen's avatar
      run-program: remove redundant finalizer for windows handles · 06389326
      Marius Gerbershagen authored
      We have already registered a finalizer for the external process object
      which calls external-process-wait. This in turn calls si::waitpid
      which closes the handle once the process has exited.
      06389326
    • Marius Gerbershagen's avatar
      gc: call finalizer for builtin object only when the object is truly unreachable · ddb7bb72
      Marius Gerbershagen authored
      
      
      Otherwise it can happen that a user-defined finalizer for some object
      A storing a builtin object B registers another finalizer for A making
      B reachable again while B has already been finalized.
      
      We can't impose an ordering for user-defined finalizers in general
      since these may include cyclic references. Therefore it is the duty of
      the user to write the finalizers in a consistent way which is
      independent of the order in which the finalizers are called. This
      doesn't work for builtin objects since the user can't influence
      the finalizers in this case.
      
      We also fix a bug which lead to the removal of the standard finalizer
      if a user-defined finalizer was registered and then removed.
      Co-authored-by: Daniel Kochmański's avatarDaniel Kochmański <daniel@turtleware.eu>
      ddb7bb72
  4. 10 Jun, 2021 3 commits
  5. 15 May, 2021 1 commit
  6. 10 May, 2021 4 commits
  7. 07 May, 2021 3 commits
  8. 09 Apr, 2021 2 commits
  9. 01 Apr, 2021 1 commit
  10. 31 Mar, 2021 3 commits
    • Marius Gerbershagen's avatar
      clos: replace macros by functions in with-early-accessors · 9e204464
      Marius Gerbershagen authored
      Accessors are fuctions not macros. While using macros is fine in most
      cases, we can't use them for example in higher-order functions. The
      only reason this worked in the first place is due to our compiler
      allowing expressions such as
      
      `(macrolet ((x (...) ...)) (funcall #'x ...))
      
      even though this is invalid.
      9e204464
    • Marius Gerbershagen's avatar
      cmp: fix evaluation order of sequence compiler macros · 62d1bb12
      Marius Gerbershagen authored
      Minor improvements to define-compiler-macro* (bail out if we detect
      :allow-other-keys arguments, define a named block such that
      return-from works as expected).
      
      Major refactor of sequence compiler-macros: use define-compiler-macro*
      which handles correct evaluation order, define new macro to handle
      common stuff for all sequences compiler-macros (e.g. inline policy
      checking, check that test and test-not are not both given). The main
      expansion logic in the compiler macros is unchanged although the code
      had to be slightly rewritten to accomodate the new macros.
      
      Remove the now superfluous seq-opt-parse-args function.
      62d1bb12
    • Marius Gerbershagen's avatar
      cmp: fix let bindings with initforms which are lists with QUOTE symbol as first element · dd5c372f
      Marius Gerbershagen authored
      Example:
      
      (let ((x '(quote ...))) ...)
      
      We really have to quote the value in all cases, si::maybe-quote would
      strip away one level of quotation leaving only the equivalent
      of (let ((x (quote ...))) ...) which of course is incorrect.
      dd5c372f
  11. 29 Mar, 2021 1 commit
    • Marius Gerbershagen's avatar
      cmp: fix compiler macro for make-array · 23dde962
      Marius Gerbershagen authored
      The previous version had several problems: argument evaluation order
      was not handled correctly and the compiler-macro produced an error for
      valid code like
      
      (let ((etype :element-type))
        (make-array 10 etype 'character))
      
      Introduce a new generally applicable macro define-compiler-macro*
      which fixes these issues.
      23dde962
  12. 25 Mar, 2021 2 commits
    • Marius Gerbershagen's avatar
      cmp: fix bad warnings for type declarations inside locally · d54c1103
      Marius Gerbershagen authored
      Also search lexical environment for variables instead of only the
      list of variables being established by the current form (which is nil
      anyway in the case of locally; only let or multiple-value-bind
      statements create new variables).
      
      The declaration is still ignored, but fixing that would require a much
      larger refactor because currently variable types are associated to the
      variable itself. Thus the type can only be set for the full scope in
      which the variable is active and not locally in some subscope.
      d54c1103
    • Marius Gerbershagen's avatar
      cmp: fix inlining of functions with &key and &aux arguments · 977e2fab
      Marius Gerbershagen authored
      &aux arguments come after &key ones.
      
      Fixes #633.
      977e2fab
  13. 24 Mar, 2021 1 commit
  14. 21 Mar, 2021 3 commits