Author: yamakenz
Date: Wed Jul 18 09:56:27 2007
New Revision: 4742
Modified:
sigscheme-trunk/NEWS
sigscheme-trunk/RELNOTE
sigscheme-trunk/TODO
sigscheme-trunk/doc/spec.txt
Log:
* doc/spec.txt
- Describe the problem about current macro implementation
* TODO
* NEWS
* RELNOTE
- Update for 0.8.0
Modified: sigscheme-trunk/NEWS
==============================================================================
--- sigscheme-trunk/NEWS (original)
+++ sigscheme-trunk/NEWS Wed Jul 18 09:56:27 2007
@@ -3,19 +3,19 @@
* New features
- - R5RS promises (delay and force)
-
- - SRFI-1 List Library
+ - SRFI-1 List Library (full featured)
- SRFI-55 require-extension
- SRFI-95 Sorting and Merging
+ - R5RS promises (delay and force)
+
- New syntax let-optionals* compatible with Gauche for optional argument
processing
- %%require-module and scm_require_module(). 'use' and scm_use() have been
- deprecated and will be removed in SigScheme 0.9
+ deprecated and will be removed in SigScheme 0.9.0
- System-installed libraries written in Scheme are introduced. And to manage
them, scm_set_system_load_path() and %%system-load-path have been added
@@ -30,8 +30,8 @@
* Specification changes
- - SRFI-75 characters have been turned into R6RS (R5.92RS) characters
- completely, including configuration names
+ - SRFI-75 characters have been turned into R6RS (R5.92RS) characters,
+ including configuration names
- Make Shift_JIS encoding name (CES) and Unicode CCS names of the codec API
proper
@@ -55,6 +55,8 @@
- [R5RS] Fix multiple values inacceptance of call-with-values continuation
such as (receive (x y) (call/cc (lambda (k) (k 0 1))))
+ - [R5RS] Fix error on (integer->char 0) on non-Unicode codecs
+
- [R6RS] Fix invalid Unicode character acception on integer->char
- Fix unexpected memory exhaustion on negative length on make-string
@@ -68,6 +70,17 @@
- New document multibyte.txt about multibyte character processing has been
added
+
+ - Code validation for R5RS characters, all R5RS string procedures, R5RS
+ vectors, SRFI-2, SRFI-8 and Multibyte character processing have been done
+ and now can be used for production codes
+
+ - SRFI-1 List Library is partially validated, but expected as usable quality.
+ Though C part is fully validated, the Scheme part imported from the
+ reference implementation of SRFI-1 is not fully validated. See
+ test/test-srfi1-another.scm for validation status. The procedures that not
+ validated only have header comment such as ";; delete-duplicates" in the
+ file.
Overview of changes from 0.7.3 to 0.7.4
Modified: sigscheme-trunk/RELNOTE
==============================================================================
--- sigscheme-trunk/RELNOTE (original)
+++ sigscheme-trunk/RELNOTE Wed Jul 18 09:56:27 2007
@@ -1,4 +1,4 @@
-SigScheme 0.7.4 Release Note
+SigScheme 0.8.0 Release Note
============================
What's SigScheme
@@ -6,6 +6,12 @@
SigScheme is a R5RS Scheme interpreter for embedded use.
+It features small footprint (64KB in library form on the 'small' configuration)
+like SIOD and TinyScheme, low memory consumption (2-words per cons cell),
+multibyte characters handling (UTF-8, EUCs and Shift_JIS) and more.
+
+It is mainly developed to replace the Scheme interpreter of uim.
+
Homepage:
http://code.google.com/p/sigscheme/
@@ -13,32 +19,25 @@
About This Release
------------------
-This distribution of SigScheme 0.7.4 is latest stable release of the
-software. And this release has been adopted by uim 1.4.0, the primary
+This distribution of SigScheme 0.8.0 is latest stable release of the
+software. And this release will be adopted by uim 1.5.0, the primary
application of SigScheme.
-As declared in 0.6.1 release, the main goal of 0.7.x series is to acquire
-stability and standards conformance. Though many parts have been validated
-against the standards, reviewed, tested and fixed, following parts are not done
-yet. Please keep in mind that using these features involves standards
-conformity and/or stability problems.
+This release aimed to acquire many useful features such as SRFI-1 (see "What's
+New" section), and to complete code validations for most part of
+SigScheme. Following features that left unvalidated in 0.7.x series have been
+validated and now can be used for production codes.
- R5RS characters
- - Some string procedures of R5RS
- - Multibyte character encodings
- - R5RS Vectors
+ - All string procedures of R5RS
+ - R5RS vectors
- SRFI-2
- SRFI-8
+ - Multibyte character processing
-And the hygienic macros feature is still likely having a problem. See
-doc/spec.txt for details.
-
- - R5RS hygienic macros
-
-And finally, these features are completely broken and not usable yet.
-
- - R5RS promises
- - SRFI-1
+But R5RS hygienic macros feature is still likely having a reliability problem,
+and also contains architectural inefficiency. See "Macros" subsection of
+doc/spec.txt for details. It is expected to be resolved in 0.9.0.
See the file 'QALog' for further information about the quality assurance state.
@@ -52,39 +51,12 @@
What's New
----------
- - New %%prealloc-heaps procedure for memory consumptive applications
-
-
-What's New in 0.7.3
--------------------
-
- - [CRITICAL] Fix broken libgcroots compilation on SPARC and IA-64 (NIIBE
- Yutaka)
-
-
-What's New in 0.7.2
--------------------
-
- - [CRITICAL] Fix broken libgcroots (Etsushi)
-
- - Fix distribution making procedure
-
- - Fix '-no-cpp-precomp' warning on gcc
-
- - Change To: mail address of make-report.sh which does not have size
- limitation
-
-
-What's New in 0.7.1
--------------------
-
- - Fix 17 R5RS-conformance bugs and 4 SRFI-conformance bugs
-
- - Fix 8 critical, 13 major and 12 minor bugs
-
- - All particular language features and behaviors have become configurable via
- --enable and --disable options of the configure script, with automated
- feature dependencies resolution and conflict detection
+ - SRFI-1 List Library (full-featured)
+ - SRFI-55 require-extension
+ - SRFI-95 Sorting and Merging
+ - R5RS promises (delay and force)
+ - let-optionals* for optional argument processing
+ - Character codec handling procedures
See 'NEWS' for the fully detailed changes.
@@ -92,7 +64,7 @@
Notes for Packagers and System Integrators
------------------------------------------
- - libgcroots has been developed and bundled in this release. Since it is
+ - libgcroots has been updated and bundled in this release. Since it is
installed as a separated library independent of libsscm, please create its
own package, and make SigScheme package depending on it with
"--with-libgcroots=installed"
@@ -103,12 +75,3 @@
- The options "--enable-debug" and/or "--enable-backtrace" make SigScheme
quite heavy. Please keep them unspecified for normal library
-
-
-Thanks
-------
-
-Hans-J. Boehm and all authors of Boehm GC for the useful codes.
-
-Tanaka Akira for letting me realize about the GC problem through the
-presentation at Binary 2.0 Conference 2006.
Modified: sigscheme-trunk/TODO
==============================================================================
--- sigscheme-trunk/TODO (original)
+++ sigscheme-trunk/TODO Wed Jul 18 09:56:27 2007
@@ -1,5 +1,16 @@
==============================================================================
-Requirements and critical bugs:
+High priority tasks:
+
+* (0.9) Efficient macro
+ - Introduce compilation phase (see "Macros" subsection of spec.txt)
+ - Make macro expansion performed on compilation phase
+ - Make runtime syntax sugars interpretation into macro expansions on
+ compilation phase (such as internal definition or implicit lambda on
+ define)
+ - Validate as production quality
+
+* (0.9) Provide a record type
+ - Evaluate SRFI-9 and R6RS records
* grep "FIXME" and fix them
@@ -22,16 +33,6 @@
* Introduce dynamic environment for internal use
- Fix continuation-unsafe current-{input,output}-port handling with it
- - Replace Scm_current_char_codec handling with it
-
-* Dynamic encoding switching for a conversion between string and char list,
- based on a SRFI or de facto standard API
- - Evaluate ces API of Gauche
- - Consider dynamic environment
-
-* Implement a record type
- - Evaluate SRFI-9 and SRFI-76
- - Make a comparison with uim's define-record
* Implement numbers other than integer
- Define SAL accessors considering SRFI-50 and other implementations
@@ -58,6 +59,8 @@
==============================================================================
Properness improvements: (not required for now)
+
+* Update test-r4rs.scm to CVS HEAD of SCM
* Import http://sisc.sourceforge.net/r5rs_pitfall.scm
- Fix hygienic-macro incapability of module_srfi34.c to catch errors into
Modified: sigscheme-trunk/doc/spec.txt
==============================================================================
--- sigscheme-trunk/doc/spec.txt (original)
+++ sigscheme-trunk/doc/spec.txt Wed Jul 18 09:56:27 2007
@@ -55,6 +55,34 @@
integration into SigScheme is not fully validated yet. It is likely having a
problem on identifier references.
+In addition to the validity problem, there is an architectural inefficiency.
+Since SigScheme had been started as macro-less naive system, it lacks the
+concept 'compilation'. So current SigScheme implementation adopted runtime
+macro expansion. A macro form is kept untransformed in program, and expanded
+immediately before each evaluation. For example, following code causes macro
+expansion on each `map-caddr` call.
+
+.Macro expansion inefficiency
+----------------------------------------------------------------
+(define-syntax compose-internal
+ (syntax-rules ()
+ ((compose-internal f x) (f x))
+ ((compose-internal f g ...) (f (compose-internal g ...)))))
+
+(define-syntax compose
+ (syntax-rules ()
+ ((compose) values)
+ ((compose f) f)
+ ((compose f g ...) (lambda (x) (compose-internal f g ... x)))))
+
+(define map-caddr
+ (lambda (lst)
+ (map (compose car cdr cdr) lst)))
+----------------------------------------------------------------
+
+Since it is considerably inefficient in many cases, keep in mind the expansion
+cost. The inefficiency problem is expected to be resolved in SigScheme 0.9.0.
+
Numbers
~~~~~~~