- 01 Jul, 2021 1 commit
-
-
Daniel Kochmański authored
- separate passes The separation is not fine-grained but is a good starting point for further cleanup. This is a preliminary requirement for multiple backends. - use uninternet symbol in the package definition - remove "execute" permission from all files - remove a few unused functions - rearrange loaded files - less verbose compiler Don't print "End of pass 1." message. This doesn't provide any valuable information to the programmer.
-
- 12 Jun, 2021 2 commits
-
-
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.
-
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 <daniel@turtleware.eu>
-
- 10 Jun, 2021 2 commits
-
-
Dima Pasechnik authored
-
Dima Pasechnik authored
-
- 10 May, 2021 3 commits
-
-
Daniel Kochmański authored
-
Daniel Kochmański authored
The forward-referenced-class metaclass has no superclasses. Moreover: - check superclasses after they are added (removes one fixme) - don't map validate-superclass during clos booting
-
- 07 May, 2021 2 commits
-
-
Marius Gerbershagen authored
-
Marius Gerbershagen authored
-
- 09 Apr, 2021 1 commit
-
-
Marius Gerbershagen authored
-
- 01 Apr, 2021 1 commit
-
-
Marius Gerbershagen authored
-
- 31 Mar, 2021 3 commits
-
-
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.
-
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.
-
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.
-
- 29 Mar, 2021 1 commit
-
-
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.
-
- 25 Mar, 2021 2 commits
-
-
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.
-
Marius Gerbershagen authored
&aux arguments come after &key ones. Fixes #633.
-
- 21 Mar, 2021 5 commits
-
-
Marius Gerbershagen authored
We now warn at compile time and create a type assertion which errors at runtime.
-
Marius Gerbershagen authored
-
Marius Gerbershagen authored
We can't use aref since aref ignores fill-pointers and ecl_fixnum can be used only in unsafe code.
-
Marius Gerbershagen authored
We are transforming these functions into (loop :on ...). This simply stops when the objects which we are looping on is not a list, but we need to signal a type-error because the mapping functions are specified to take only lists.
-
Marius Gerbershagen authored
-
- 20 Mar, 2021 3 commits
-
-
Marius Gerbershagen authored
We were doing no error checking that we got the right number of arguments. Also remove the manual creation of forms with a backquote for better readability.
-
Marius Gerbershagen authored
All of these functions take either a list of symbols or a single symbol (except for shadow which uses string designators or lists thereof).
-
Marius Gerbershagen authored
Improves error messages.
-
- 18 Mar, 2021 2 commits
-
-
Marius Gerbershagen authored
If a variable which is set with multiple-value-setq is bound to a symbol-macro, we need to handle the order of side-effects as in setf. Previously, we were first evaluating the value generating form of the multiple-value-setq before setting the places from the symbol-macro. The correct order is to first evaluate the forms from the symbol macro giving the places to set, then evaluate the value generating form from the multiple-value-setq and then set the places to the generated values.
-
Marius Gerbershagen authored
This must return nil as a single value while we were returning no values.
-
- 12 Mar, 2021 1 commit
-
-
Marius Gerbershagen authored
-
- 11 Mar, 2021 1 commit
-
-
Marius Gerbershagen authored
The ansi standard specifies that declaring symbols bound with symbol-macrolet to be special or binding symbols that are defined as global variables must signal a program-error. Previously, we simply ignored this issues. Also fix an issue with cmp-env-search-variables which would wrongly return variables when searching for symbol macros. This allows us to remove another check in symbol-macro-declaration-p.
-
- 10 Mar, 2021 1 commit
-
-
Yuri D. Lensky authored
Ensure correct rule precedence for header files.
-
- 07 Mar, 2021 2 commits
-
-
Marius Gerbershagen authored
When parsing keyword arguments of functions like (defun f (&key allow-other-keys) allow-other-keys) (note that `&key allow-other-keys` is not `&allow-other-keys`!), we were incorrectly handling the case in which this function was called like (f :some-unknown-keyword x :allow-other-keys non-nil-value) In this case, the spec (CLHS 3.4.1.4) says that the function has to ignore the unknown keyword and return the non-nil-value, while we were signaling an "unknown keyword" error.
-
Marius Gerbershagen authored
Get rid of the unnecessary mask (which wouldn't have worked correctly anyway if somebody passed more than 32 :allow-other-keys arguments).
-
- 04 Mar, 2021 2 commits
-
-
Marius Gerbershagen authored
If we inline a function which contains keyword arguments whose default value depends on the presence of other keyword arguments as for example in (funcall (lambda (&key (a nil a-p) (b a-p)) ...)) where `b` depends on the presence of `a`, we need to set the key-flag `a-p` immediately after scanning for the keyword and not at the end after we have finished scanning all keywords as we did previously.
-
Marius Gerbershagen authored
-
- 03 Mar, 2021 2 commits
-
-
Marius Gerbershagen authored
-
Marius Gerbershagen authored
Make the ansi-test suite happy.
-
- 27 Feb, 2021 1 commit
-
-
Marius Gerbershagen authored
-
- 23 Feb, 2021 1 commit
-
-
Marius Gerbershagen authored
-
- 15 Feb, 2021 1 commit
-
-
Marius Gerbershagen authored
prog1 returns only the first value. Closes #617.
-