Skip to content
Snippets Groups Projects
  1. Jan 22, 2010
  2. Oct 18, 2009
    • rtoy's avatar
      Merge changes from unicode-string-buffer-impl-branch which gives · 392d3e59
      rtoy authored
      faster reads on external-formats.  This is done by adding an
      additional buffer to streams so we can convert the entire in-buffer
      into characters all at once.
      
      To build this change, you need to do a cross-compile using
      boot-2009-10-1-cross.lisp.  Using that build, do a normal build with
      these sources.
      
      For a non-unicode build use boot-2009-10-01.lisp with a 20a
      non-unicode build.
      
      code/extfmts.lisp:
      o Add another slot to the extfmts for copying the state.
      o Modify EF-OCTETS-TO-STRING and OCTETS-TO-STRING to support the
        necesssary changes for fast formats.  This is incompatible with the
        previous version because the string is not grown if needed.
      
      code/fd-stream-extfmt.lisp:
      o Set *enable-stream-buffer-p* to T so we have fast streams.
      
      code/fd-stream.lisp:
      o Add new slots to support fast strams.
      o In SET-ROUTINES, initialize the new slots appropriately.
      o Update UNREAD-CHAR to be able to back up in the string buffer to
        unread.
      o Add implementation to copy the state of an external format.
      
      code/stream.lisp:
      o Change %SET-FD-STREAM-EXTERNAL-FORMAT to be able to change formats
        even if we've already converted the buffer with a different format.
        We reconvert the buffer with the old format until we reach the
        current character.  Then the remaining octets are converted using
        the new format and stored in the string buffer.
      o Add FAST-READ-CHAR-STRING-REFILL to refill the string buffer, like
        FAST-READ-CHAR-REFILL does for the octet in-buffer.
      
      code/struct.lisp:
      o Add new slots to hold the string buffer, the current index, and
        length.  These are needed for the fast formats.
      
      code/sysmacs.lisp:
      o Update PREPARE-FOR-FAST-READ-CHAR, DONE-WITH-FAST-READ-CHAR, and
        FAST-READ-CHAR to support the string buffer.
      
      code/string.lisp:
      o Microoptimization of SURROGATEP to reduce the number of branchs.
      
      general-info/release-20b.txt:
      o Update with these changes
      
      pcl/simple-streams/external-formats/utf-16-be.lisp:
      pcl/simple-streams/external-formats/utf-16-le.lisp:
      pcl/simple-streams/external-formats/utf-16.lisp:
      o These formats actually have state, so update them to take a handle
        an initial state.  These are needed if the string buffer ends with a
        leading surrogate and the next string buffer starts with a trailing
        surrogate.  The conversion needs to combine the surrogates together.
      392d3e59
  3. Sep 09, 2009
  4. Aug 26, 2009
    • rtoy's avatar
      Add support for flushing out any state in an external format when · 1325c62e
      rtoy authored
      closing an output stream.  This causes things like
      
      (with-open-file (s "foo" :direction :output :external-format :utf-8)
        (write-char #\u+d800 s))
      
      to output the replacement character instead of creating an empty file.
      
      code/extfmts.lisp:
      o Add new slot to efx structure to hold the function to flush the
        state in an external format.
      o Add accessor for the flush-state slot.
      o Update DEFINE-EXTERNAL-FORMAT to allow specifying the flush
        function.
      o Add macro to call the flush-state function.
      o Added +EF-FLUSH+
      o Use vm::defenum to name the constants instead of the hand-written
        values.
      o Export +REPLACEMENT-CHARACTER-CODE+
      o Document the slots in an efx stucture.
      
      code/fd-stream.lisp:
      o Add ef-flush def-ef-macro to flush the state of an external format
        when closing an output file.  If ef-flush-state is NIL, we just call
        EF-COUT to send out the replacement character.  Otherwise, the
        flush-state function is called to handle it.
      o When closing an output character stream, call ef-flush to flush any
        state before flushing the buffers of the stream.
      o Document the unicode slots in an fd-stream.
      
      code/exports.lisp:
      o Export +REPLACEMENT-CHARACTER-CODE+
      1325c62e
  5. Aug 10, 2009
    • rtoy's avatar
      Fixes from Paul Foley: · 94ed0111
      rtoy authored
      o Standard streams no longer change formats when
        *default-external-format* changes.  Use
        stream:set-system-external-format instead, or (setf
        external-format).
      o char-to-octets properly handles surrogate characters being written.
      o Makes simple-streams work again.
      
      This change needs to be cross-compiled.  2009-07 binaries work for
      cross-compiling using the 19e/boot-2008-05-cross-unicode-*.lisp
      cross-compile script.
      94ed0111
  6. Jun 25, 2009
  7. Jun 24, 2009
  8. Jun 11, 2009
  9. Nov 05, 2007
  10. Feb 27, 2006
  11. Apr 04, 2005
    • rtoy's avatar
      Change how the CMUCL extension enabling both character and binary I/O · 5795a2f7
      rtoy authored
      is done, based on a suggestion from Lynn Quam.
      
      o Add BINARY-TEXT-STREAM structure for streams that support binary and
        character I/O.  This is basically an FD-STREAM.
      o Export BINARY-TEXT-STREAM from the EXTENSIONS package.
      o OPEN will recognize :class 'ext:binary-text-stream to enable such
        streams.
      o Removed *FD-STREAM-ENABLE-CHARACTER-AND-BINARY-INPUT*, since we use
        OPEN to specify that now.
      
      Use boot-2005-03-2.lisp to bootstrap this change.
      5795a2f7
  12. Feb 21, 2005
    • rtoy's avatar
      Apply Lynn Quam's proposed enhancements to fd-streams allowing input · d4ad6755
      rtoy authored
      streams opened with element-type (unsigned-byte 8) to be also opened
      for character input.  This gives simple-streams semantics to
      fd-streams.
      
      * code/fd-stream.lisp
        o Make FD-STREAM-IN use PICK-INPUT-ROUTINE to select the correct
          type of input.
        o Add *FD-STREAM-ENABLE-CHARACTER-AND-BINARY-INPUT* to allow binary
          and character input.  Currently defaults to NIL, but will change
          to T.
      
      * code/stream.lisp
        o New READ-INTO-SIMPLE-STRING to allow stream element-type of
          (unsigned-byte 8).
        o Support reading and writing simple arrays of single-float and
          double-float.
        o Strings can be written to streams of element-type '(unsigned-byte
          8).
      
      * tools/worldcom.lisp
        o Compile stream-vector-io.lisp.
      
      * tools/worldload.lisp
        o Load stream-vector-io.
      
      * code/stream-vector-io.lisp
        o New file implementing READ-VECTOR and WRITE-VECTOR.
      d4ad6755
  13. Feb 10, 2005
  14. Sep 23, 2004
  15. Apr 23, 2004
  16. Apr 15, 2004
    • rtoy's avatar
      More ANSI test fixes: · 2e51cd52
      rtoy authored
      o FILE-STRING-LENGTH can be used on BROADCAST-STREAM's where the
        result is 1.
      o Graphic characters are not printed using the character name (hence
        #\space is printed #\ )
      o Make INPUT-STREAM-P and OUTPUT-STREAM-P work correctly on synonym
        streams.
      o MAKE-STRING-INPUT-STREAM was not accepting NIL for the optional END
        argument.
      o Close string-input streams.  (We weren't before.)
      2e51cd52
  17. Apr 06, 2004
    • emarsden's avatar
      · f01e1819
      emarsden authored
        - fix defaulting behaviour of :if-not-exist in OPEN when used with
          :direction :io. Corrects a number of the OPEN.IO.* ANSI compliance tests.
      f01e1819
  18. Mar 26, 2004
    • emarsden's avatar
      · 10b760ea
      emarsden authored
       - add a SIMPLE-STREAM-ERROR class, and use it when signaling errors from
         fd-streams DO-OUTPUT (noted by Matthew Danish)
      
       - fix bug in fd-stream error handling (patch from Ole Rohne)
      10b760ea
  19. Nov 05, 2003
  20. Nov 03, 2003
    • gerd's avatar
      (with-open-file (stream "test.123" :direction :output · b10e98ff
      gerd authored
      	                        :if-exists :supersede)
      	  (format stream "~S ~S ~S~%" 'these 'are 'symbols))
      
      	(with-open-file (stream "test.123" :direction :io
      	                        :if-exists :overwrite)
      	  (read stream) (prin1 'insert stream))
      
      	(with-open-file (stream "test.123")
      	  (loop for line = (read-line stream nil)
      	        until (null line) do (write-line line)))
      
      	Output should be "these insertmbols"
      	Output is "these are symbols\ninsert"
      
      	* src/code/fd-stream.lisp (def-output-routines): If there is any
      	input read from UNIX but not supplied to the user of the stream,
      	reposition to the real file position as seen from Lisp.
      	Reported by Adam Warner.
      b10e98ff
  21. Aug 19, 2003
  22. Aug 05, 2003
  23. Jun 26, 2003
    • toy's avatar
      From Paul Foley: · bfbb8fd1
      toy authored
      Non-simple-streams-related changes:
      
      * Stop commands which go through invoke-command-interactive from
        affecting the history variables.
      
      * Fix some typos in comments
      
      * When the GC closes a lost stream, revert to original contents
      
      * Replace #+nil with #+(or) in unix*.lisp
        [NIL is a potentially valid feature name]
      
      
      Simple-streams-related changes:
      
      * Teach reader to handle simple-streams
      
      * Add missing package prefixes in OPEN
      
      * Add unix:unix-msync for force-output on mmapped files
      
      * Add placeholder documentation
      
      * Numerous changes in simple-streams implementation
      
      * Add "external-formats" directory for external formats
      
      
      Note: :BIG-ENDIAN or :LITTLE-ENDIAN should be put on *features*
      bfbb8fd1
  24. Jun 11, 2003
  25. Jun 10, 2003
    • toy's avatar
      Some changes from Paul Foley: · 842ce4c2
      toy authored
      o Fix a number of spelling errors.
      o Add EXT:PURGE-FILES (hmm, should that be renamed to
        purge-backup-files?) to delete old versions of files.
      o Opening a file with :if-exists :append shouldn't set the Unix append
        flag, else you can't seek back to a point before you started
        appending. (Actually from Rudi Schlatte.)
      o Fix a bug in logical pathname parsing.
      o Fix FASL-file versioning so we don't create versioned fasl files.
      842ce4c2
  26. Jun 07, 2003
    • toy's avatar
      More simple-streams updates from Paul Foley: · d03aa23c
      toy authored
      o An update to fix Gerd's complaint about :simple-streams being on
        *features*
      o Corrects a few bugs
      o Renames all the strategy functions
      o Gets rid of DEVICE-EXTEND (Duane Rettig tells me it's going away in
        the next ACL release)
      o A start on getting stream& composition working.
      d03aa23c
  27. Jun 06, 2003
  28. Jun 05, 2003
  29. Jun 02, 2003
  30. Dec 12, 2002
    • moore's avatar
      · 5fa826f9
      moore authored
      Remove cruft from last checkin.
      5fa826f9
    • moore's avatar
      · 1a766c11
      moore authored
      Fix a typo in apply-with-bindings.
      
      Add string-stream and file-stream, required by the ANSI spec, as
      structure classes.  Make the string streams and fd-stream,
      respectively, inherit from them.  Add bootstrap magic.
      1a766c11
  31. Aug 23, 2002
  32. Aug 02, 2002
  33. Apr 03, 2002
  34. Feb 04, 2002
  35. Jul 08, 2001
    • pw's avatar
      From Paul Foley: · c9918062
      pw authored
      	Implements READ- and WRITE-SEQUENCE on Gray streams, via
      	STREAM-READ-SEQUENCE and STREAM-WRITE-SEQUENCE, and provides a :class
      	keyword to OPEN which lets it return Gray streams classes wrapped
      	around lisp-streams.
      
      	Load exports.lisp before compiling with this set of changes.
      c9918062
  36. Jun 17, 2001
    • pw's avatar
      From Eric Marsden: · 45a54c42
      pw authored
      FILE-LENGTH should signal a type-error if arg is not associated with a file.
      45a54c42
  37. Mar 04, 2001
  38. Oct 16, 2000
Loading