[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gcl-devel] 2.7.0
From: |
Camm Maguire |
Subject: |
[Gcl-devel] 2.7.0 |
Date: |
21 Mar 2006 18:28:09 -0500 |
User-agent: |
Gnus/5.09 (Gnus v5.9.0) Emacs/21.2 |
Greetings! Just a brief heads up about the latest commit just made.
Quite a lot of changes, improvements hopefully :-).
1) si::proper-list is now propagated somewhat. This is basically
intended to allow sequence -> list simplification inside certain do
loops, etc. Check out the difference between the disassembly of
'(lambda (x) (let (( r t)) (dolist (x x) (push x r)) (length r)))
and '(lambda (x) (let (r) (dolist (x x) (push x r)) (length r)))
for example. Also might be of interest to add (declare (optimize
(safety 1))), which turns on arg checking. Certain arg checks are
eliminated automatically by the type propagation. The map
functions, list, etc. return proper-list. There are doubtless
others I haven't put in yet.
2) check-type is now consolidated at both ansi and saved_pre_gcl
levels, and implemented in a way which does not cause untold grief
at the overhead :-). Replacement of the offending forms is
supported in compiled and interpreted code at both levels.
3) Several bug fixes implemented, which still need a bit of
refinement. In a nutshell, conditionally executed code needs to
have variable setq operations undone in the outside scope --
'with-restore-vars is provided for this purpose, but the code can
be much cleaner if it is expanded.
4) O3 -> Os as it appears faster, and is much smaller. We could
trigger this, as well as certain inlining/compiler-macro-expansion,
with the *space* setting if desired.
5) Variable types are inferred and checked for constant evaluation,
and not is handled as a predicate as is null. Check out '(lambda
(x) (declare (null x)) (endp x)), with null replaced by cons, list,
si::proper-list (or just use mapcar or (let ((x '(1 2 3))))), and
at safety 0 and 1, for example. Expansions of the form (let ((x
(form))) (if x x (other-form))) used to always foil the type
propagation.
6) error and cerror are compatible at the saved_pre_gcl with the ansi
semantics. We can now try to remove the specific-error hacks, and
cleanup other continuable error disasters, such as package-error.
There is quite a bit else, but that's all I have time for for now.
We're just about at the point where we can put in some reverse type
propagation, and finish up the sequence function inlining, especially
remove and delete.
Take care,
--
Camm Maguire address@hidden
==========================================================================
"The earth is but one country, and mankind its citizens." -- Baha'u'llah
- [Gcl-devel] 2.7.0,
Camm Maguire <=