TODO

Table of Contents

1 EuLisp Definition

  • TODO Update EuLisp definition and Youtoo and EuXLisp implementations
    to correspond to the EuLisp-1.0 proposals. See proposal document.
  • TODO Undefined references [34/41]
    • [X] class:abstract-class
    • [X] class:character-sequence
    • [X] class:collection
    • [X] class:condition-class
    • [X] class:<function>
    • [-] class:function-class
    • [-] class:hash-table
    • [X] class:list
    • [X] class:metaclass
    • [-] class:method
    • [X] class:name
    • [X] class:sequence
    • [-] class:simple-class
    • [-] class:simple-function
    • [-] class:simple-method
    • [-] class:simple-thread
    • [X] class:super-class
    • [X] condition:condition
    • [X] condition:no-converter
    • [X] condition:methods-exists
    • [X] condition:read-error
    • [X] defform:defmacro
    • [X] defform:defun
    • [X] function:eq
    • [X] function:eql
    • [X] function:end-of-stream
    • [X] function:fill-buffer
    • [X] function:=
    • [X] generic:binary<
    • [X] generic:binary=
    • [X] generic:eql
    • [X] generic:eq|
    • [X] generic:equal
    • [X] generic:generic-prin
    • [X] generic:method
    • [X] generic:mod
    • [X] generic:read
    • [X] keyword:accessor
    • [X] keyword:export
    • [X] setter:method-function
    • [X] syntax:unquote-splice
  • TODO Add entry for the <method> class in Level-1
  • TODO Add details of the <hash-table> class and functions
  • TODO Update stream module
    to corresponding to the Youtoo implementation.
  • DONE Add descriptions of constants to "Layout and Typography"
    CLOSED: 2010-04-01 Thu 12:16
    in structure.tex. Include details of constant instances of classes and constant bindings to classes (class aliases).
  • DONE <thread> vs <abstract-thread>
    CLOSED: 2010-06-16 Wed 09:18
    Sort out the difference between the EuLisp definition and the Youtoo implementation with respect to the name of the abstract base-class for threads. In the definition it is <thread> whereas in Youtoo it is <abstract-thread> and <thread> is used for the currently used thread type.
  • DONE Reformat the defgeneric rewrite rules to conform to the others
    CLOSED: 2010-04-23 Fri 08:39
  • DONE Consider reformatting all of the rewrite rules
    CLOSED: 2010-04-23 Fri 08:40
    to be more consistent with the syntax description.
  • TODO Add the return type to the syntax descriptions
  • TODO Add "signatures" to all function descriptions
  • DONE Change macro definitions to special operators
    CLOSED: 2010-06-15 Tue 23:04
    It doesn't seem sensible to effectively specify that certain syntax MUST be implemented as macros; surely this decision should be taken by the implementers and for efficiency reasons it might be preferable that more of the special operators are implemented as primitives of the language.
  • TODO Finish the "Lexical Syntax" section
    Provide a bit more background information.
  • TODO Introduce the "Special Forms" list in modules.tex
    Or move this list to a more appropriate place, e.g. at the beginning of the section concerning "special forms".
  • TODO Introduce the "Level-1" library and describe "module-1"
  • TODO Re-reference definitions in the "Level-1" library
    so that they do not clash with those in the "Level-0" library.
  • DONE Remove the "syntax-category" entries from the index
    CLOSED: 2010-10-29 Fri 22:44
  • DONE Add slice generic function and methods
    CLOSED: 2010-07-01 Thu 22:48
  • DONE Add destructive <sequence> generic functions sort! and reverse!
    CLOSED: 2010-04-27 Tue 22:48
    Check for other <sequence> methods which should destructive variants.
  • DONE Clarify the wording concerning the relationship between nil and ()
    CLOSED: 2010-05-09 Sun 21:09
    State that (eq 'nil '()) ==> t. *** DONE Replace =equal= with =binary== CLOSED: 2010-05-14 Fri 14:30
    Remove the equal generic function and methods and introduce a complete set of binary= methods.
  • DONE Change naming convention for predicates? and destructive! functions
    CLOSED: 2010-06-09 Wed 10:46
    There is a suggestion in the definition documents suggesting that the Scheme/T naming convention for predicates (end in ?) and destructive functions (end in !) should be considered for EuLisp. I agree with this suggestion to improve consistency and readability and made the corresponding changes including "null" -> "null?" and "atom" -> "atom?".
  • TODO Add a Scheme-style case statement
  • DONE Add a Scheme-style else
    CLOSED: 2010-07-06 Tue 12:25
    for the default clause of cond and case forms. else is simply an alias for t.
  • DONE Add when and unless conditional expressions
    CLOSED: 2010-07-02 Fri 10:16
  • TODO Add while loop construct
  • DONE Rename labels -> letfuns
    CLOSED: 2010-11-08 Mon 22:42
  • TODO Consider including append
    either in generic form or just for lists and perhaps strings.
  • DONE Add support for Level-0 style super-class specification
    CLOSED: 2010-10-29 Fri 22:53
    If only one super-class is specified allow single-inheritance syntax of specifying the class directly rather than as a list.

2 Youtoo and EuXLisp

  • DONE Replace equal with binary=
    CLOSED: 2010-05-12 Wed 22:57
    Remove the equal generic function and methods and introduce a complete set of binary= methods. The only difference between the definition of equal and binary= is the latter applies type coercion whereas equal was defined not two. If this property is an important feature equal could be reinstated as a function wrapper around binary= which does a type-consistency check.
  • DONE Complete the renaming of predicates? and destructive! functions
    CLOSED: 2010-06-15 Tue 14:31
    All predicates ending in "-p" have been transformed and the functions "null?" and "atom?" added but the predicates ending in "p" have yet to be updated.
  • DONE Change prin, print and write to be n-ary
    CLOSED: 2010-06-15 Tue 15:30
    Add sprin, sprint and swrite to take the stream as the first argument.
  • DONE Add sprint and change print to use stdout
    CLOSED: 2010-06-29 Tue 16:58
  • DONE Rename require predicate keyword requiredp: -> required?:
    CLOSED: 2010-06-29 Tue 15:38
  • DONE Rename abstractp: -> abstract?:
    CLOSED: 2010-06-29 Tue 21:47
  • TODO Add slice method for <vector>
  • DONE Reconsider <int>, should it be <fpi>?
    Yes. CLOSED: 2010-10-23 Sat 23:10
  • DONE What should <double-float> be called? <double-float>
    CLOSED: 2010-10-26 Tue 22:30
    <double> as in Youtoo? If so then the name <float> as the abstract base class is odd.

3 Youtoo

  • DONE Split of word-length dependent functionality into separate modules
    CLOSED: 2010-02-23 Tue 19:31
    Split files
    • Comptime2/64bit/cg-exec.em
    • Comptime2/32bit/cg-exec.em

    Into

    • Comptime2/cg-exec.em
    • Comptime2/64bit/cg-exec-nbit.em
    • Comptime2/32bit/cg-exec-nbit.em
  • DONE Regenerate all the .c files from the .em files to remove
    CLOSED: 2010-02-08 Mon 10:14
    • ARGDECL
    • PROTOTYPE
  • DONE Regenerate all the .c files from the .em files to remove eul_const
    CLOSED: 2010-02-08 Mon 14:37
  • DONE Remove compat.h
    CLOSED: 2010-02-08 Mon 22:54
    when backward compatibility is no longer needed.
  • DONE Change all the Makefiles of all the Modules and Examples
    CLOSED: 2010-02-23 Tue 19:31
    so that the libraries and executables are located in platform/$(ARCH) or //Lib.$(ARCH)/ and //Bin.$(ARCH)/ directories.
  • DONE Investigate warning messages from Examples/Misc/ffi2.c
    CLOSED: 2010-02-08 Mon 22:54
    Creating stand-alone application of module ffi2 … Compiling ffi2.c using gcc … //home/dm2/henry/EuLisp/youtoo/Examples/Misc/ffi2.c/: In function ‘ff_stub_ext_foo_in
  • TODO Resolve warning messages from ffi applications
    by introducing an option to allow a header file declaring the ff's to be included in the stubs files.
    • Add header-files including the ffi definitions to all the Modules libraries.
  • DONE Investigate when Lib.${ARCH}/*.i should be copied to Lib
    CLOSED: 2010-05-06 Thu 13:47
  • DONE Sort out the Modules/Bignum/Makefile
    CLOSED: 2010-02-23 Tue 19:31
    Currently the linking of the gmp library is hard-coded.
  • DONE Upgrade the TclTk library to 8.5
    CLOSED: 2010-02-14 Sun 23:27
  • DONE Investigate problems with the Modules/OS (object serialisation) lib
    CLOSED: 2010-02-23 Tue 19:30
  • TODO Change the MPI interface to work with OpenMPI
  • DONE Comptime2/youtoo.em sometimes ends-up in the wrong state
    CLOSED: 2010-06-21 Mon 22:55
    should be
    (defmodule youtoo
    ;; Final, proper executable!
    (import (level-1 math eval i-aux0 syntax-1))
    
    (main *argv*)
    
    )  ; end of module
    

    but sometimes remains in the intermediate build state

    (defmodule youtoo
    ;; Preliminary executable!
    (import (level1 math eval))
    
    (main *argv*)
    
    )  ; end of module
    

    during the boot-strap build. The consequence is that the final executable is unable to compile module files correctly issuing errors like

    *** ERROR [nuseq][top-level]: exported lexical binding subseq not available
    *** ERROR [nuseq][top-level]: no lexical binding defgeneric available
    *** ERROR [nuseq][top-level]: no lexical binding subseq available
    *** ERROR [nuseq][top-level]: no lexical binding seq available
    

    This is resolved by using an external previous build of youtoo to bootstrap.

  • DONE Split the "boot" section of Comptime2/Makefile
    CLOSED: 2010-02-16 Tue 15:06
    into the two parts to make the preliminary and final executables. Also move the "driver" part into the top-level Makefile.
  • DONE Clean all .em files
    CLOSED: 2010-02-26 Fri 15:01
    to remove blank line at beginning, tabs and trailing white-space.
  • TODO Add support in the REPL to load dynamically-linked module libraries
  • DONE Add support for #;(sexp) comments in Runtime/Ff/eul-ntok.c
    CLOSED: 2010-04-23 Fri 22:44
  • DONE Add line-number counting to Runtime/Ff/eul-ntok.c
    CLOSED: 2010-11-18 Thu 22:29
    This also requires the introduction of a line-number counting stream to hold the line-number and provide access to the error reporting system.
  • DONE read-error
    CLOSED: 2010-04-01 Thu 21:31
    Replace the use of error with read-error in read.em
  • DONE Change the handling of multiple-escape sequences in eul-ntok.c
    CLOSED: 2010-04-22 Thu 22:52
    to correspond to the syntax for identifiers as described in the definition. Currently the handling of multiple-escape sequences is a duplicate of the handling for strings with all the special characters when the single escape character should only be required to escape itself and the multiple-escape character.
  • DONE Add slice generic function and methods
    CLOSED: 2010-05-06 Thu 13:46
    slice for string can a wrapper around substring already available in Youtoo.
  • DONE Add reverse! method for <string>
    CLOSED: 2010-04-27 Tue 12:25
    Requires equivalent ff in eul-ext.c
  • DONE Sort out the syntax of character sequences
    CLOSED: 2010-04-26 Mon 19:46
    • There is a problem with the need for double escaping: #\\x000, #\\\ etc.
    • Hexadecimal sequences are hard-coded to 3 digits, if not where is the end?
    • How should the character '^' be written given that it is used to define control sequences e.g. #^c ? Perhaps #^ ?
    • Proposed solution
      To remove support for control sequences which are unusual, system-dependent and can be created using hexadecimal characters. Also fix the number of hexadecimal digits for a character to 4 which is sufficient to support unicode but also avoids parsing problems.
  • DONE Change the parser to map ='nil= to ='()=
    CLOSED: 2010-05-09 Sun 21:06
    so that (eq 'nil '()) => t
  • DONE (eql 3.0 3.0) should return t but it returns ()
    CLOSED: 2010-05-10 Mon 21:50
  • TODO Finish format
    Currently format only handles a subset of the functionality in the definition, in particular e and g formatting of floating-point numbers is missing. format is complete in EuXLisp and it may be possible to reuse some of this functionality.
  • DONE Enable level-0 modules to be loaded interactively
    CLOSED: 2010-06-21 Mon 14:32
    into a level1 environment by creating a dummy level-0 which is a copy of the default env
  • DONE Include default environment variables directly into youtoo
    CLOSED: 2010-06-21 Mon 17:12
    to avoid the need for the start-up script to set them.
  • DONE Add the -m load module option
    CLOSED: 2010-11-04 Thu 16:22
    compatible with the equivalent option added to EuXLisp.|
  • DONE Add a Scheme-style else
    CLOSED: 2010-06-22 Tue 22:34
    for the default clause of cond forms. else is simply an alias for t.
  • TODO Develop map and do to handle more than 2 sequences
    for <list>, <vector> etc.
  • TODO Fix output of very large and very small <double-float> numbers
    print can output numbers of the order of 1e30 but does not use exponential format. There appears to be a limit on the number of decimal places that can be output which might relate to the size of on output formatting buffer.
  • TODO Consider adding an expander for element to get-appl-expander
    for <vector>, <string> and maybe =<list> in file ex-expr.em. This might avoid the generic function call overhead for returning an element of a primitive container.
  • DONE Add support for Level-0 style super-class specification
    CLOSED: 2010-09-20 Mon 22:41
    If only one super-class is specified allow single-inheritance syntax of specifying the class directly rather than as a list.
  • TODO Correct write ing of character digrams and escape sequences in strings
  • DONE Correct defconstant to handle character constants correctly
    CLOSED: 2010-10-23 Sat 19:06
    See (deflocal nl #\\n) which should be (defconstant nl #\\n) in stream.em.
  • TODO Improve --script option to handle module definition
    See Examples/Test/factScript.em.
  • DONE --script option should switch-off readline
    CLOSED: 2010-10-08 Fri 19:57
  • DONE Check Modules/Pipe
    CLOSED: 2010-10-08 Fri 08:32
    Currently the path /home/dm2/henry/EuLisp/EuLisp/Modules/Pipe/../../Bin.x86_64/youto o.sh is used which works but the equivalent /home/dm2/henry/EuLisp/EuLisp/Bin.x86_64/youto o.sh does not, nor does the relative path ../../Bin.x86_64/youtoo.sh which should.
  • TODO Consider replacing the built-in GC with xalloc in Eu2C
  • DONE Change level1 -> level-1 [3/3]
    CLOSED: 2010-11-04 Thu 16:23
    • [X] Add level-1 as copy of level1
    • [X] Change all uses of level1 level-1
    • [X] Remove level1
  • TODO Rename labels -> letfuns
  • TODO Add support for hierarchical application of module filters
    e.g.
    (defmodule test
      (import (level-1
               (rename ((something something-else))
                       (only (something)
                             things))))
      ) ; end of module
    
  • DONE Complete support for eval
    CLOSED: 2010-12-19 Sun 09:59
    Following the analysis in the report "Modules, Macros and Lisp", Queinnec and Padget, it is proposed to add eval to EuLisp with the following operator:
    • Add additional optional module argument to eval to set the environment in which the eval evaluates which defaults to the current module.

    However, unlike the proposal in the report an additional restriction is added that it is exported environment in which eval operates rather than the complete lexical environment within the module. This restriction is necessary because only the exported environment is guaranteed to exist at "eval" time; the rest of the internal lexical environment may not be complete due to, for example, compiler optimisations.

    The basic functionality is now complete and a simple example provided in Examples/Eval but currently there is no way to know what the current module is so the additional "optional" argument is currently required e.g.:

    (eval (read lispin () ()) 'eval-test)
    

    It may be possible to remove this limitation by either keeping a local variable in each module holding the module name or by converting eval into a macro so that the module name can be expanded into the optional argument slot during compilation. This is now implemented.

4 EuXLisp

  • DONE Finish reformatting the C source files
    CLOSED: 2010-10-23 Sat 19:03
  • DONE Add slice method for <list>
    CLOSED: 2010-07-01 Thu 23:04
  • DONE Add flush and sflush
    CLOSED: 2010-06-27 Sun 22:59
  • TODO Update the class hierarchy
    • remove <simple-string>, <simple-vector> etc.
    • add <sequence>, <character-sequence> etc.
  • DONE Remove the export of <make-...> functions
    CLOSED: 2010-07-05 Mon 15:20
    Replace with generic make <...> calls in modules.
  • DONE Rename primitive Scheme functions in the C-code
    (rename
      ((begin progn)
      (pair? cons?)
      (real? float?)
      (real? double-float?)
      (procedure? function?)
      (eq? eq)
      (eqv? eql)))
    
  • DONE Add binary-mod function
    CLOSED: 2010-07-05 Mon 21:35
    This is equivalent to binary% for integers but returns an <fpi> for <double-float>s, see definition.
  • DONE Add time function
    CLOSED: 2010-07-06 Tue 13:01
    See Youtoo implementation
  • DONE Switch-off readline when running a module with the -m option
    CLOSED: 2010-07-05 Mon 15:19
  • DONE Rename -length functions -> -size
    CLOSED: 2010-07-05 Mon 11:42
  • DONE Rename simple-vector -> vector
    CLOSED: 2010-07-05 Mon 22:03
  • TODO Complete double-float functionality in arith.em
    See Youtoo/Runtime/double.em
  • TODO Consider replacing the built-in GC with xalloc from Eu2C
  • DONE Rename labels -> letfuns
    CLOSED: 2010-11-08 Mon 22:43

5 Eu2C

  • DONE Hack CMUCL to write exponent "e"
    CLOSED: 2010-08-30 Mon 11:15
    C required double precision numbers to be written with "e" rather than the CL standard "d".
  • DONE Hack CMUCL to support symbols with post-fix ":"
    CLOSED: 2010-08-30 Mon 11:17
    Keywords in EuLisp are symbols with a post-fix ":" which is not allowed in standard CL except as an extension. Need to hack the CMUCL reader to support symbols with a post-fix ":".
  • DONE Reformat all CL and EuLisp code
    CLOSED: 2010-08-30 Mon 14:15
    to conform to a traditional CL style extended to handle the EuLisp specific forms, in particular defmodule. The eulisp-mode for Emacs supplied now conforms to this style and may be used to automatically re-indent code.
  • TODO Reformat trailing parentheses in all CL and EuLisp code
  • TODO Change the initlist keywords to use the post-fix ":"
  • DONE Rename <fixed-precision-integer> -> <fpi>
    CLOSED: 2010-08-30 Mon 14:35
  • TODO Consider adding a special list for the keywords
    Currently they are simply symbols which happen to end in a ":".
  • DONE Add support for the default superclass in defclass
    CLOSED: 2010-09-02 Thu 15:45
    Currently the superclass MUST be specified but the definition states that if the superclass is () then the default superclass <object> will be used.
  • TODO Consider writing a defclass which supports multiple-inheritance
    Currently only single-inheritance is supported by defclass as specified in EuLisp Level-0 but it should be possible to add support for a list of super-classes as specified in EuLisp Level-1.
  • TODO Correct case handling for symbols
    • Currently symbols or interned with capitalised names.
    • This can only be corrected by enabling case-preservation in CL:
    • (setf (readtable-case readtable) :preserve)
    • The consequence is that all standard CL symbols must be written in uppercase.
  • TODO Test current thread implementation in 32bit
    If it proves effective consider writing the 64bit equivalents of the pieces of assembly code necessary for 64bit operation.
  • TODO Consider replacing current setjmp/longjmp threads with pthreads
  • DONE Change location of the [cho], {inst,def} and executable files
    CLOSED: 2010-09-02 Thu 13:38
    Currently the top-level Makefile does not set the location of the files which are build-dependant.
  • TODO Replace equal with binary=
    Remove the equal generic function and methods and introduce a complete set of binary= methods. The only difference between the definition of equal and binary= is the latter applies type coercion whereas equal was defined not two. If this property is an important feature equal could be reinstated as a function wrapper around binary= which does a type-consistency check.
  • DONE Rename predicate functions
    CLOSED: 2010-09-02 Thu 15:45
    Rename predicates ending in "-p" and "p" to use the post-fix "?". Add the post-fix "?" to atom and null.
  • DONE Change prin, print and write to be n-ary
    CLOSED: 2010-10-07 Thu 22:11
    Add sprin, sprint and swrite to take the stream as the first argument.
  • DONE Add sprint and change print to use stdout
    CLOSED: 2010-10-07 Thu 22:11
  • DONE Add sformat and change format to use stdout
    CLOSED: 2010-10-07 Thu 22:11
  • TODO Add required?: predicate keyword to class
  • TODO Add abstract?: predicate keyword to class
  • DONE Investigate the GC in 64bit
    CLOSED: 2010-10-07 Thu 22:11
    Examples/umdrehen.em fails in 64bit probably due to a memory allocation error.
  • TODO Investigate the generate-*hack*
    In file Apply/generate-def-file.ecl the generate-*hack* is necessary because
    1. the macro definitions are not yet moved to the def-file;
    2. variables imported from c are not moved to the def-file because include-statements for the c-preprocessor can't be generated, due to the explicit declaration of c-import in the module interface without connection to the variable declarations.
  • TODO Split defglobal and dynamic-??? from Apply/el2lzs-rules.ecl
    into a level-1 file.
  • DONE Create a level-1 module
    CLOSED: 2010-10-23 Sat 19:09
    including the level-0, dynamic and exit-1 modules.
  • TODO Create the exit-1 module
    containing the throw and catch functionality. Perhaps the syntax operators from Youtoo can be re-used for this.
  • TODO Add support for generic-lambda
    See Youtoo.
  • TODO Investigate exposing MOP functionality from lzs-mop.ecl
    It may be possible to expose the EuLisp Level-1 MOP functionality already present and use it in EuLisp modules, e.g. test-introspection.em
    (%define-function (class-precedence-list <cons>)
      ((cl <class>))
      (%select cl <class> class-precedence-list))
    
    (print (class-precedence-list <null>))
    
  • DONE Renaming according to 1.0 proposals
    CLOSED: 2010-09-07 Tue 21:45
    • Rename <execution-condition> as <general-condition>
    • Rename <syntax-error> as <read-error>
    • Rename <slot-description> as <slot> (and all other such references)
    • To remove <structure> and <structure-class>
  • DONE Rename labels -> letfuns
    CLOSED: 2010-11-08 Mon 22:43

6 Other

  • DONE Complete emacs mode eulisp-mode.el for EuLisp
    CLOSED: 2010-08-30 Mon 14:20
  • DONE Include emacs eulisp-mode.el in the git repository
    CLOSED: 2010-06-19 Sat 22:46
  • TODO Complete emacs inferior-mode inf-eulisp.el
    for Youtoo and EuXLisp, it would not be useful for Eu2C which is non-interactive, i.e. no REPL.

Date: 2011-01-27 22:46:08 GMT

HTML generated by org-mode 6.33x in emacs 23