[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Guile-commits] GNU Guile branch, wip-array-refactor, created. release_1

From: Andy Wingo
Subject: [Guile-commits] GNU Guile branch, wip-array-refactor, created. release_1-9-0-78-g0f38dbd
Date: Sat, 18 Jul 2009 15:37:09 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU Guile".

The branch, wip-array-refactor has been created
        at  0f38dbddb70d8199015b754574cf27577bda00ca (commit)

- Log -----------------------------------------------------------------
commit 0f38dbddb70d8199015b754574cf27577bda00ca
Author: Andy Wingo <address@hidden>
Date:   Sat Jul 18 17:33:19 2009 +0200

    reimplement srfi-4 vectors on top of bytevectors
    * libguile/srfi-4.h:
    * libguile/srfi-4.c (scm_make_srfi_4_vector): New function, exported by
      (srfi srfi-4 gnu).
    * libguile/srfi-4.i.c: Removed.
    * module/srfi/srfi-4.scm:
    * module/srfi/srfi-4/gnu.scm: Reimplement srfi-4 vectors on top of
      bytevectors. The implementation is mostly in Scheme now.
    * module/rnrs/bytevector.scm:
    * libguile/bytevectors.c (scm_uniform_array_to_bytevector): No more need
      for this, as uniform vectors are bytevectors, and we can get the
      backing vector of an array via shared-array-root.
    * libguile/bytevectors.c (bytevector_ref_c32, bytevector_ref_c64)
      (bytevector_set_c32, bytevector_set_c64): Fix some embarrassing bugs.
      Still need to do an upper bounds check.
    * libguile/deprecated.h: Remove deprecated array functions:
      scm_i_arrayp, scm_i_array_ndim, scm_i_array_mem, scm_i_array_v,
      scm_i_array_base, scm_i_array_dims, and the deprecated macros:
    * libguile/deprecated.c (scm_uniform_vector_read_x)
      (scm_uniform_vector_write, scm_uniform_array_read_x)
      (scm_uniform_array_write): Newly deprecated functions.
    * libguile/generalized-arrays.c (scm_array_type): Remove the bytevector
      hack. This does introduce the bug that #vu8(1 2 3) will compile to
      #u8(1 2 3). I'm working on that.
    * libguile/objcodes.c (scm_bytecode_to_objcode, scm_objcode_to_bytecode):
      Rework to operate on bytevectors, as scm_make_u8vector now causes a
      module lookup, which can't be done e.g. when loading the VM boot
      program for psyntax-pp.go on a fresh bootstrap.
    * libguile/objcodes.h (SCM_F_OBJCODE_IS_BYTEVECTOR):
    * module/ice-9/boot-9.scm (the-scm-module): A terrible hack to pull in
      (srfi srfi-4), as the bindings are primarily there now. We'll worry
      about this later.
    * module/language/glil/compile-assembly.scm (dump-object): Update to
      work with array-contents and shared-array-root.

commit 85ef810b766b87b6570c073800f0547539ec305d
Author: Andy Wingo <address@hidden>
Date:   Sat Jul 18 16:06:17 2009 +0200

    bytevectors have "element type" field, e.g. for generalized-vector-ref
    Bytevectors have a very close relationship to other forms of uniform
    vectors. Often you want to view a u64vector as a series of bytes, for
    writing over a socket; or to process an incoming bytevector using the
    convenient and less error-prone s16vector-ref API rather than
    The essential needs of the representation of a bytevector and an
    s64vector are the same, so we take advantage of that and allow the
    bytevector implementation to be used to store "typed" data -- data that
    when printed or accessed using the generic vector API behaves as a
    uniform vector, but can also be accessed as a bytevector.
    This commit doesn't actually expose any user-noticeable changes,
    * libguile/bytevectors.h (SCM_F_BYTEVECTOR_TYPED):
      (scm_i_make_typed_bytevector, scm_c_take_typed_bytevector): New
      internal functions.
    * libguile/bytevectors.c (SCM_BYTEVECTOR_SET_ELEMENT_TYPE):
      (SCM_BYTEVECTOR_TYPED_LENGTH): New internal macros.
      (make_bytevector, make_bytevector_from_buffer): Take an extra
      argument, the element type. The length argument is interpreted as
      being the number of elements, which corresponds to the number of bytes
      in the default U8 case. Doing it this way eliminates a class of bugs
      -- e.g. a u32vector of length 3 bytes doesn't make sense. We do have
      to check for another class of bugs: overflow. The length stored on the
      bytevector itself is still the byte length, though.
      (scm_c_take_typed_bytevector): New internal functions/macros.
      SCM_BYTEVECTOR_SET_TYPED is only called by these functions.
      (scm_i_shrink_bytevector): Make sure the new size is valid for the
      bytevector's type.
      (scm_i_bytevector_generalized_set_x): Remove this function, the
      array-handle infrastructure takes care of this for us.
      (print_bytevector): Print the bytevector according to its type. There
      is one special case, that #u8(1 2 3) and #vu8(1 2 3) are not the same
      -- the difference is marked by the TYPED flag.
      (scm_make_bytevector, scm_bytevector_copy)
      (scm_u8_list_to_bytevector, scm_bytevector_to_uint_list): Adapt to
      make_bytevector extra arg.
      (bv_handle_ref, bv_handle_set_x): Adapt to ref and set based on the
      type of the bytevector, e.g. f64 or u8.
      (bytevector_get_handle): Set the typed length of the vector, not the
      byte length.

commit fa147e98d02778a5c01f57a30920e7e88d0233fa
Author: Andy Wingo <address@hidden>
Date:   Sat Jul 18 13:46:29 2009 +0200

    bytevector inlinedness indicated by flag, not length
    * libguile/bytevectors.h (SCM_BYTEVECTOR_INLINE_P): Change to check a
      flag instead of checking the length of the bytevector.
    * libguile/bytevectors.c (make_bytevector_from_buffer): Handle the len
      <= inline threshold case as well. Set the inline flag as appropriate.
      (make_bytevector): Updat the inline flag as appropriate.
      (scm_c_take_bytevector): Just dispatch to make_bytevector_from_buffer.
      (scm_i_shrink_bytevector): Update the inline flag as appropriate.
      Update the length when shrinking an already-inlined vector.
      (STRING_TO_UTF): Fix some indentation.

commit 38370c178b6b7d6886a0cfdd12a01fff6914448e
Author: Andy Wingo <address@hidden>
Date:   Sat Jul 18 13:26:18 2009 +0200

    any->u8vector and family now implemented in Scheme
    * module/
    * module/srfi/srfi-4/gnu.scm: New module, for extensions to srfi-4.
      Currently defines the any->FOOvector family.
    * libguile/srfi-4.c:
    * libguile/srfi-4.i.c: Dispatch scm_any_to_FOOvector calls to the
      scheme-implemented functions in (srfi srfi-4 gnu).

commit 68f6d21275d553016f8bb238f70421494ce7f401
Author: Andy Wingo <address@hidden>
Date:   Sat Jul 18 13:11:28 2009 +0200

    squashme to the make-vector patch
    * libguile/extensions.c (scm_init_extensions): No need to NULL the list
      of registered extensions here, the static init does it for us. Allows
      scm_c_register_extension to be called before scm_init_extensions.
    * libguile/init.c (scm_i_init_guile): Move array initialization earlier,
      so e.g. scm_init_strings has access to a valid list of array element
      types when registering its vector constructor.

commit 70f75f567191973f37c0597bbcadac0b6c89a133
Author: Andy Wingo <address@hidden>
Date:   Sat Jul 18 12:58:37 2009 +0200

    make-typed-array builds backing vector via make-generalized-vector
    * libguile/arrays.c: Rework to use scm_make_generalized_vector instead
      of our own type table.
    * libguile/bitvectors.c: Fix some includes.

commit f245f0ed60012ff8ea7fff90735cff4f57fad6cf
Author: Andy Wingo <address@hidden>
Date:   Sat Jul 18 12:43:54 2009 +0200

    add registry of vector constructors, make-generalized-vector
    * libguile/generalized-vectors.h:
    * libguile/generalized-vectors.c: Add a registry of vector constructors.
      (scm_make_generalized_vector): New public function, constructs a
      vector of a given type.
    * libguile/bitvectors.c:
    * libguile/bytevectors.c:
    * libguile/srfi-4.c:
    * libguile/strings.c:
    * libguile/vectors.c: Register vector constructors.

commit 474f40acc5ab02d271cd281639b3e7d828e0c398
Author: Andy Wingo <address@hidden>
Date:   Sat Jul 18 12:18:15 2009 +0200

    uniform vector functions to their own file
    * libguile/uniform.c:
    * libguile/uniform.h:
    * libguile/srfi-4.c:
    * libguile/srfi-4.h:
    * libguile/ Move uniform vector funcs out of srfi-4 to their
      own file.
    * libguile.h:
    * libguile/arrays.c:
    * libguile/bytevectors.c: Update includers.

commit e7a37c2a79e081db4cebc0afeb8d7e5e9cde9e9c
Author: Andy Wingo <address@hidden>
Date:   Fri Jul 17 19:05:32 2009 +0200

    generic vector ops to own file
    * libguile/
    * libguile/vectors.c:
    * libguile/vectors.h:
    * libguile/generalized-vectors.c:
    * libguile/generalized-vectors.h: Move generic vector ops off into their
      own file too. The implementation is now based on the generic
      array-handle infrastructure.
    * libguile.h:
    * libguile/array-map.c:
    * libguile/bitvectors.c:
    * libguile/random.c:
    * libguile/srfi-4.c: Update includers.

commit fb50bc286cf992d26931af3a223dc63fad3555f1
Author: Andy Wingo <address@hidden>
Date:   Fri Jul 17 18:54:06 2009 +0200

    move generic array foo out to its own file
    * libguile/arrays.h:
    * libguile/arrays.c:
    * libguile/generalized-arrays.h:
    * libguile/generalized-arrays.c: Move some generic functionality out of
      arrays.c to a new file.
    * libguile/array-map.c:
    * libguile/deprecated.c:
    * libguile/init.c: Update includers.

commit be948126fe67d8580b2dc640cf57b4d91f8e583c
Author: Andy Wingo <address@hidden>
Date:   Fri Jul 17 13:12:05 2009 +0200

    * libguile/array-handle.c:

commit 77114dfc54b2f4a4c1815cca730d799ca6bf2915
Author: Andy Wingo <address@hidden>
Date:   Fri Jul 17 12:45:24 2009 +0200

    remove enclosed arrays
    * libguile/arrays.h:
    * libguile/array-map.c:
    * libguile/arrays.c:
    * libguile/deprecated.c: Remove "enclosed arrays". The only user-facing
      procedures that this affects are scm_enclose_array / enclose-array. If
      enclosed arrays are added back, it should be through the generic array
      interface; but really, it sounds like something that would be better
      implemented in Scheme.

commit defba9294dd5a85cdbb4141699fb098845865fc8
Author: Andy Wingo <address@hidden>
Date:   Fri Jul 17 11:20:22 2009 +0200

    add generic array implementation facility
    * libguile/array-handle.c (scm_i_register_array_implementation):
      (scm_i_array_implementation_for_obj): Add generic array facility,
      which will (in a few commits) detangle the array code.
      (scm_array_get_handle): Use the generic array facility. Note that
      scm_t_array_handle no longer has ref and set function pointers;
      instead it has a pointer to the array implementation. It is unlikely
      that code out there used these functions, however, as the supported
      way was through scm_array_handle_ref/set_x.
      (scm_array_handle_pos): Move this function here from arrays.c.
      (scm_array_handle_element_type): New function, returns a Scheme value
      representing the type of element stored in this array.
    * libguile/array-handle.h (scm_t_array_element_type): New enum, for
      generically determining the type of an array.
      (scm_array_handle_dims): These are now just #defines.
    * libguile/arrays.c:
    * libguile/bitvectors.c:
    * libguile/bytevectors.c:
    * libguile/srfi-4.c:
    * libguile/strings.c:
    * libguile/vectors.c: Register array implementations for all of these.
    * libguile/inline.h: Update for array_handle_ref/set change.
    * libguile/deprecated.h: Need to include arrays.h now.

commit b267c10389504004d6d6421606794b903956ce7e
Author: Andy Wingo <address@hidden>
Date:   Fri Jul 17 01:08:35 2009 +0200

    rename unif.[ch] to arrays.[ch]
    * libguile/
    * libguile/unif.c:
    * libguile/unif.h:
    * libguile/arrays.c:
    * libguile/arrays.h: Rename unif.[ch] to arrays.[ch].
    * libguile.h:
    * libguile/array-handle.c:
    * libguile/array-map.c:
    * libguile/bitvectors.c:
    * libguile/bytevectors.c:
    * libguile/eq.c:
    * libguile/gc-card.c:
    * libguile/gc-malloc.c:
    * libguile/gc-mark.c:
    * libguile/gc.c:
    * libguile/init.c:
    * libguile/inline.h:
    * libguile/print.c:
    * libguile/random.c:
    * libguile/read.c:
    * libguile/socket.c:
    * libguile/sort.c:
    * libguile/srfi-4.c:
    * libguile/srfi-4.h:
    * libguile/strports.c:
    * libguile/vectors.c:
    * libguile/vectors.h: Update includers.

commit b06072c99ce5fcf742009a1b7aa7ff93befb4f0b
Author: Andy Wingo <address@hidden>
Date:   Fri Jul 17 00:58:32 2009 +0200

    bitvector exodus from unif.[ch]
    * libguile/
    * libguile/unif.c:
    * libguile/unif.h:
    * libguile/bitvectors.c:
    * libguile/bitvectors.h: Move bitvector functionality out of unif.[ch].
    * libguile/array-handle.c:
    * libguile/array-map.c:
    * libguile/init.c:
    * libguile/read.c:
    * libguile/srfi-4.c:
    * libguile/vectors.c: Oh, what a tangled web we weave...

commit a5077c98cbde7b3c8bfdc43ec3b46dfca150888e
Author: Andy Wingo <address@hidden>
Date:   Fri Jul 17 00:47:31 2009 +0200

    parts of unif.[ch] to array-handle.[ch]
    * libguile/array-handle.c:
    * libguile/array-handle.h: Move some parts of unif.c and unif.h to these
      new files.
    * libguile/unif.c:
    * libguile/unif.h: Update includers. Since unif.h depends on the array
      handle type, we include array-handle.h, which also means that there
      will be no difference for our callers.
    * libguile/init.c: Call scm_init_array_handle, though it does nothing as
      of yet.
    * libguile/ Adapt for new files.

commit c06619b043d3fd03ed41dcd7d78a5019b293850b
Author: Andy Wingo <address@hidden>
Date:   Fri Jul 17 00:25:49 2009 +0200

    rename ramap.[ch] to array-map.[ch]
    * libguile/array-map.c:
    * libguile/array-map.h: Rename from ramap.c and ramap.h.
    * libguile.h:
    * libguile/
    * libguile/eq.c:
    * libguile/init.c:
    * libguile/sort.c:
    * libguile/unif.c:
    * libguile/vectors.c: All referrers changed.

commit 07f07b91f3a1b6f336e8d01956d64953bd758e9d
Author: Andy Wingo <address@hidden>
Date:   Fri Jul 17 00:16:43 2009 +0200

    rename scm_i_make_ra to scm_i_make_array
    * libguile/unif.c (scm_i_make_array): Rename from scm_i_make_ra. All
      callers changed.

commit 46c0309893aadf9628e63abe0c760ee4950b8bf3
Author: Andy Wingo <address@hidden>
Date:   Thu Jul 16 22:15:04 2009 +0200

    clean up libguile/
    * libguile/ Clean up some of the file lists, should make
      future diffs easier to parse.

commit 1bd34a40ec70ed6670505b9e65937b718e2ac2e5
Author: Andy Wingo <address@hidden>
Date:   Thu Jul 16 22:02:25 2009 +0200

    remove convert.{c,i.c,h}
    * libguile/convert.c:
    * libguile/convert.h:
    * libguile/convert.i.c: Remove these functions, which were undocumented,
      not in the libguile/ header, and thus unlikely to have been used.

commit 863e9c04bd362d78d26d071c88af0c3326429a78
Author: Andy Wingo <address@hidden>
Date:   Thu Jul 16 21:51:47 2009 +0200

    remove deprecated functions from unif.c
    * libguile/unif.h:
    * libguile/unif.c: Remove deprecated functions.
    * module/ice-9/deprecated.scm: Remove array-related deprecated
    * NEWS: Update.


GNU Guile

reply via email to

[Prev in Thread] Current Thread [Next in Thread]