~ chicken-core (chicken-5) bc31b6a57f81366fc7077e9d56049d72180c0ffb


commit bc31b6a57f81366fc7077e9d56049d72180c0ffb
Author:     felix <felix@call-with-current-continuation.org>
AuthorDate: Tue Dec 1 11:27:22 2009 +0100
Commit:     felix <felix@call-with-current-continuation.org>
CommitDate: Tue Dec 1 11:27:22 2009 +0100

    removed TODO

diff --git a/TODO b/TODO
deleted file mode 100644
index 45129fad..00000000
--- a/TODO
+++ /dev/null
@@ -1,226 +0,0 @@
-TODO for chicken							-*- Outline -*-
-================
-
-
-* bugs
-
-** csc: no backtrace if chicken fails
-
-** compiler
-*** pre-optimization 
-**** changes call-sites and makes them invalid for later pre-optimization
-*** check profiling (-profile vs. profile-declaration)
-**** this doesn't always seem to work, in particular with library units
-**** ##sys#finish-profile should always be invoked
-     is it in `exit'?
-*** when re-defining intrinsics, the compiler should warn and disable re-writes
-    add declaration to keep re-writes enabled for core library files
-*** -prologue, -epilogue, -prelude, -postlude should check for argument being directory 
-    (reported by Eduardo Cavazos)
-
-** expander
-*** expansion of r5rs_pitfall 4.2 incorrect
-    possibly due to a non-aliased implicit "begin" somewhere
-*** dirty-macros.scm loops when using `defile'
-    possibly due to unrenamed special forms
-*** extended lambda-lists refer to `optional' and `let-optionals[*]'
-    this will break, when these macros are renamed on import or not imported
-    at all
-**** a possible solution is to use internal forms, provided by the "scheme" module.
-*** need way to force generating module-registration code for standalone executables.
-
-** modules
-*** mark import-source (module) on plist of imported symbols and use in re-import warning
-    doesn't work that easily, try to find another solution
-*** DSSSL lambda-lists need imports of `chicken' module ("optional", "let-optionals", ...)
-**** should probably use internal aliases
-
-** libraries
-*** library/runtime: cyclic list checks for assq/assv/assoc/memq/memv/member
-    and C_i_list_tail
-*** finalizers on lexically ref'd data not working in interpreter
-    reported by Jim Ursetto
-    reverted original patch, see patches/finalizer-closures.diff
-
-
-* tasks
-
-** eggify lolevel
-
-** private commits not in pending
-
-commit 5b09da9117edcc3c80d45d1ef08b788bed42ddf1
-Author: felix <felix@call-with-current-continuation.org>
-Date:   Mon Nov 16 10:37:14 2009 +0100
-
-    don't use backdoor to tinyclos for instance foreign type
-
-*** notrace
-
-commit c1154565abc041202110aae8e93a57cbe3fba3c2
-Author: Felix <bunny351@gmail.com>
-Date:   Sun Oct 11 11:37:44 2009 +0200
-
-    removed trace operations from manual
-
-commit c41657eedc99190a644df6581a8bf9944452a97a
-Author: Felix <bunny351@gmail.com>
-Date:   Sun Oct 11 11:37:06 2009 +0200
-
-    remove tracing facilities from csi - this can be done better using the advice egg
-
-
-** module issues
-*** need a way to omit generating module registration without generating import lib
-    for example when compiling static version, where implib already exists
-*** code-duplication in compiler and evaluator for ##core#module
-*** "scheme" module does not include some special forms ("define-syntax", etc.)
-*** import-for-syntax imports value bindings into import-env
-    should actually be a distinct meta-import-env.
-    example: we need `(import-for-syntax chicken)' to have access to
-    `receive' in a procedural syntax definition.
-*** curried define performs expansion in empty se - problem?
-    (as comment in expand.scm indicated (##sys#register-export))
-*** check phase separation and module access
-**** see "expander" above
-*** consider adding support for unnamed modules
-
-** compiler
-*** (csc) generate object-files in /tmp (or TMPDIR)?
-
-** setup/install
-*** setup-download
-**** use "HTTP_PROXY"/"http_proxy" env. var
-**** handle redirects in http-fetch
-
-** library units
-*** read-mark list should be stored in read-table
-*** Weak locatives can probably be used to implement weak hash-tables (at least for some data)
-
-** syntax-error
-*** if ##sys#current-module is set, add name to error message?
-*** fluidly keep track of expanded forms (extend meaning of culprit) to pprint pruned expr on error
-
-** build
-*** need script to process import libraries for generating indices for doc.callcc.org
-    then tell Toby Butzon about it
-*** using "touch" with WINDOWS_SHELL won't work (need alternative) (mingw/non-msys build)
-*** extend scripts/guess-platforms.sh for more platforms
-
-** scrutiny
-*** add support for keyword arguments and check even length and available keywords
-
-** runtime
-*** try to build with TLS
-
-
-* features
-
-** error-handling hook for argument-type errors that signal a non-number
-   the numbers hook could modify this and provide a better error message if a non-core
-   number type triggers such an error
-
-
-* tests
-
-** optional longer run (env. var)
-*** syntax-rules-stress-test
-*** fully compiled ec-tests
-** 3-stage bootstrap with compiler-output comparison
-
-
-* optimizations
-
-** define these as static inline functions in chicken.h:
-   C_i_not_pair_p_2
-   C_i_fixnum_arithmetic_shift
-   C_a_i_flonum_negate
-   C_a_i_flonum_quotient
-   C_a_i_flonum_times
-   C_a_i_flonum_difference
-   C_a_i_flonum_plus
-   C_u_i_oddp
-   C_u_i_negativep
-   C_u_i_positivep
-   C_u_i_zerop
-   C_u_i_inexactp
-   C_u_i_exactp
-   C_i_flonum_max
-   C_i_flonum_min
-   C_i_fixnum_max
-   C_i_fixnum_min
-   C_i_finitep
-   C_i_flonump
-   C_i_integerp
-   C_i_closurep
-   C_i_portp
-   C_i_vectorp
-   C_i_locativep
-   C_i_stringp
-   C_i_pairp
-   C_i_symbolp
-   C_i_eqvp
-   C_i_o_fixnum_plus
-   C_i_o_fixnum_difference
-   C_i_o_fixnum_and
-   C_i_o_fixnum_ior
-   C_i_o_fixnum_xor
-
-** local mode could be enabled for all core libs
-   also could reduce performance, as it does for regex
-
-** global inline files for core units
-*** This would remove necessity for many simple re-write rules in c-platform.scm
-
-** delegates for extended llists
-*** (define (foo ... #!XXX ...) ...)
-    ~>
-    (begin
-      (declare (hide tmp))
-      (define (tmp VAR ...) ...)
-      (define (foo ... #!XXX ...) (tmp VAR ...))
-      (define-compiler-syntax foo
-        (syntax-rules ()
-	  ((_ arg ...) (tmp <processed-arg> ...)))))
-*** only used after definition
-*** only if opt/key defaults don't refer to previous llist vars
-*** disable if no compiler-syntax enabled
-
-** self-recursion optimization
-*** what MacScheme called "benchmark-mode" (assume self-calls are recursion)
-*** needs declaration or option, >= -O2
-*** can be implemented like in the extended-llists opt. above
-*** this should actually already work in local mode (toplevel defs are known, after all)
-
-** compiler-support for get-keyword ?
-*** what when a function with keyword args gets inlined?
-*** when inlining, consing arg-list with "list" may make get-keyword possibly foldable
-
-** lambda-fusion / "fuse-and-dispatch" (suggested by Alex Shinn)
-   convert groups of local lambdas referenced to only in operator-position into
-   looping lambda + dispatch (static variable can be used), otherwise similar to
-   a conditional
-
-** handle optional args primitively 
-   for example, set to distinguished val (checking argc) on C level, core
-   primitive for checking this - should be quite simple, but llist processing
-   (decompose-lambda-list) will be more expensive and cumbersome.
-
-** The benchmarks are meaningless - find real ones.
-*** Feeley's benchmarks (slatex, compiler)
-*** Brad Lucier's fft
-
-** speculative inlining
-
-(define-compiler-syntax +          ; "mostly-fixnum-flonum" case
-  (syntax-rules ()
-    ((_ x y)
-     (let ((t1 x)
-	   (t2 y))
-       (if (and (fixnum? t1) (fixnum? t2))
-           ;; makes only sense if C_i_o_fixnum_plus is inlined at C level
-	   (or (##core#inline "C_i_o_fixnum_plus" t1 t2)
-	       (##core#inline_allocate ("C_a_i_plus" 4) t1 t2) )
-	   (if (and (flonum? t1) (flonum? t2))
-	       (##core#inline_allocate ("C_a_i_flonum_plus" 4) t1 t2)
-	       (##core#inline_allocate ("C_a_i_plus" 4) t1 t2) ) ) ) ) ) )
Trap