Merge wip-array refactor, up to cd43fdc5b7a7c
authorAndy Wingo <wingo@pobox.com>
Tue, 25 Aug 2009 16:04:02 +0000 (18:04 +0200)
committerAndy Wingo <wingo@pobox.com>
Tue, 25 Aug 2009 16:04:02 +0000 (18:04 +0200)
Conflicts:
NEWS
libguile/print.c

1  2 
NEWS
libguile/Makefile.am
libguile/deprecated.c
libguile/gc-card.c
libguile/gc-malloc.c
libguile/gc-mark.c
libguile/print.c
libguile/read.c
libguile/socket.c
libguile/strings.c
module/Makefile.am

diff --cc NEWS
--- 1/NEWS
--- 2/NEWS
+++ b/NEWS
@@@ -8,106 -8,26 +8,31 @@@ Please send Guile bug reports to bug-gu
  (During the 1.9 series, we will keep an incremental NEWS for the latest
  prerelease, and a full NEWS corresponding to 1.8 -> 2.0.)
  
--Changes in 1.9.2 (since the 1.9.1 prerelease):
++Changes in 1.9.3 (since the 1.9.2 prerelease):
  
- ** VM speed improvements
+ ** Removed deprecated uniform array procedures: scm_make_uve,
+    scm_array_prototype, scm_list_to_uniform_array,
+    scm_dimensions_to_uniform_array, scm_make_ra, scm_shap2ra, scm_cvref,
+    scm_ra_set_contp, scm_aind, scm_raprin1
  
- Closures now copy the free variables that they need into a flat vector
- instead of capturing all heap-allocated variables. This speeds up access
- to free variables, avoids unnecessary garbage retention, and allows all
- variables to be allocated on the stack.
+ These functions have been deprecated since early 2005.
  
- Variables which are `set!' are now allocated on the stack, but in
- "boxes". This allows a more uniform local variable allocation
- discipline, and allows faster access to these variables.
+ ** scm_array_p has one argument, not two
  
- The VM has new special-case operations, `add1' and `sub1'.
+ Use of the second argument produced a deprecation warning, so it is
+ unlikely that any code out there actually used this functionality.
  
- ** VM robustness improvements
+ ** Removed deprecated uniform array procedures:
+    dimensions->uniform-array, list->uniform-array, array-prototype
  
- The maximum number of live local variables has been increased from 256
- to 65535.
- The default VM stack size is 64 kilo-words, up from 16 kilo-words. This
- allows more programs to execute in the default stack space. In the
- future we will probably implement extensible stacks via overflow
- handlers.
- Some lingering cases in which the VM could perform unaligned accesses
- have been fixed.
- The address range for relative jumps has been expanded from 16-bit
- addresses to 19-bit addresses via 8-byte alignment of jump targets. This
- will probably change to a 24-bit byte-addressable strategy before Guile
- 2.0.
- ** Compiler optimizations
- Procedures bound by `letrec' are no longer allocated on the heap,
- subject to a few constraints. In many cases, procedures bound by
- `letrec' and `let' can be rendered inline to their parent function, with
- loop detection for mutually tail-recursive procedures.
- Unreferenced variables are now optimized away.
- ** Compiler robustness
- Guile may now warn about unused lexically-bound variables. Pass
- `-Wunused-variable' to `guile-tools compile', or `#:warnings
- (unused-variable)' within the #:opts argument to the `compile' procedure
- from `(system base compile)'.
- ** Incomplete support for Unicode characters and strings
- Preliminary support for Unicode has landed. Characters may be entered in
- octal format via e.g. `#\454', or created via (integer->char 300). A hex
- external representation will probably be introduced at some point.
- Internally, strings are now represented either in the `latin-1'
- encoding, one byte per character, or in UTF-32, with four bytes per
- character. Strings manage their own allocation, switching if needed.
- Currently no locale conversion is performed. Extended characters may be
- written in a string using the hexadecimal escapes `\xXX', `\uXXXX', or
- `\UXXXXXX', for 8-bit, 16-bit, or 24-bit codepoints, respectively.
- This support is obviously incomplete. Many C functions have not yet been
- updated to deal with the new representations. Users are advised to wait
- for the next release for more serious use of Unicode strings.
- ** `defined?' may accept a module as its second argument
- Previously it only accepted internal structures from the evaluator.
- ** `let-values' is now implemented with a hygienic macro
- This could have implications discussed below in the NEWS entry titled,
- "Lexical bindings introduced by hygienic macros may not be referenced by
- nonhygienic macros".
- ** Global variables `scm_charnames' and `scm_charnums' are removed
- These variables contained the names of control characters and were
- used when writing characters.  While these were global, they were
- never intended to be public API.  They have been replaced with private
- functions.
- ** EBCDIC support is removed
- There was an EBCDIC compile flag that altered some of the character
- processing.  It appeared that full EBCDIC support was never completed
- and was unmaintained.
- ** Packaging changes
- Guile now provides `guile-2.0.pc' (used by pkg-config) instead of
- `guile-1.8.pc'.
+ Instead, use make-typed-array, list->typed-array, or array-type,
+ respectively.
  
 +** And of course, the usual collection of bugfixes
 + 
 +Interested users should see the ChangeLog for more information.
 +
 +
  Changes in 1.9.x (since the 1.8.x series):
  
  * New modules (see the manual for details)
@@@ -555,6 -475,6 +480,35 @@@ This decision may be revisited before t
  to guile-devel@gnu.org (subscription required) or bug-guile@gnu.org (no
  subscription required).
  
++** Unicode characters
++
++Unicode characters may be entered in octal format via e.g. `#\454', or
++created via (integer->char 300). A hex external representation will
++probably be introduced at some point.
++
++** Unicode strings
++
++Internally, strings are now represented either in the `latin-1'
++encoding, one byte per character, or in UTF-32, with four bytes per
++character. Strings manage their own allocation, switching if needed.
++
++Currently no locale conversion is performed. Extended characters may be
++written in a string using the hexadecimal escapes `\xXX', `\uXXXX', or
++`\UXXXXXX', for 8-bit, 16-bit, or 24-bit codepoints, respectively.
++
++** Global variables `scm_charnames' and `scm_charnums' are removed
++
++These variables contained the names of control characters and were
++used when writing characters.  While these were global, they were
++never intended to be public API.  They have been replaced with private
++functions.
++
++** EBCDIC support is removed
++
++There was an EBCDIC compile flag that altered some of the character
++processing.  It appeared that full EBCDIC support was never completed
++and was unmaintained.
++
  ** New macro type: syncase-macro
  
  XXX Need to decide whether to document this for 2.0, probably should:
@@@ -588,6 -508,6 +542,10 @@@ These are analogous to %load-path and %
  
  `(make-promise (lambda () foo))' is equivalent to `(delay foo)'.
  
++** `defined?' may accept a module as its second argument
++
++Previously it only accepted internal structures from the evaluator.
++
  ** New entry into %guile-build-info: `ccachedir'
  
  ** Fix bug in `module-bound?'.
@@@ -656,17 -589,9 +632,17 @@@ to /usr/lib/guile/1.9/ccache. These fil
  
  ** New dependency: GNU libunistring.
  
--See http://www.gnu.org/software/libunistring/. We hope to merge in
--Unicode support in the next prerelease.
++See http://www.gnu.org/software/libunistring/, for more information. Our
++unicode support uses routines from libunistring.
 +
 +
 +\f
 +Changes in 1.8.8 (since 1.8.7)
 +
 +* Bugs fixed
  
 +** Fix possible buffer overruns when parsing numbers
 +** Avoid clash with system setjmp/longjmp on IA64
  
  \f
  Changes in 1.8.7 (since 1.8.6)
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -38,9 -38,8 +38,9 @@@ extern unsigned long * __libc_ia64_regi
  #include "libguile/stackchk.h"
  #include "libguile/struct.h"
  #include "libguile/smob.h"
- #include "libguile/unif.h"
+ #include "libguile/arrays.h"
  #include "libguile/async.h"
 +#include "libguile/programs.h"
  #include "libguile/ports.h"
  #include "libguile/root.h"
  #include "libguile/strings.h"
@@@ -35,8 -33,7 +35,7 @@@
  #include "libguile/procprop.h"
  #include "libguile/read.h"
  #include "libguile/weaks.h"
 -#include "libguile/arrays.h"
 +#include "libguile/programs.h"
- #include "libguile/unif.h"
  #include "libguile/alist.h"
  #include "libguile/struct.h"
  #include "libguile/objects.h"
diff --cc libguile/read.c
Simple merge
Simple merge
Simple merge
Simple merge