Skip to content
Bruce Mitchener edited this page Jan 27, 2014 · 9 revisions

Some ideas for improving the I/O library...

Improved format

The I/O library provides the format module. In Gwydion Dylan, the format directives could handle more printf functionality than the implementation in Open Dylan.

It should be pretty straight forward to port over the code from Gwydion Dylan into the code from Open Dylan.

If the Gwydion Dylan repository is added locally as a remote on your Open Dylan repository, you can probably actually cherry-pick the commits with a bit of work so that the original authorship is maintained. (Or use git format-patch from the Gwydion repo, hand-edit, and apply to Open Dylan.)

The documentation, tests, and release notes should be updated.

Simplifying Module Imports

Currently, people end up importing several modules just to be able to force-output on *standard-output*. This structure needs to be simplified.

The modules involved here are:

  • format
  • format-out
  • streams
  • standard-io

Proposals in this area are welcome.

  • Proposal #1: The format-out library should provide a corresponding flush-out function. This eliminates the need for standard-io and streams for most people. This has been implemented.
  • Proposal #2: Provide a message-out function or similar that combines format-out and force-out. This covers 90% of format-out usages.

File size and seek limits

The file APIs are specified in terms of <integer> which is too limited for 32 bit platforms:

define function unix-read
    (fd :: <integer>, data :: <buffer>, offset :: <integer>, count :: <integer>) => (result :: <integer>)
define function unix-write
    (fd :: <integer>, data, offset :: <integer>, count :: <integer>) => (result :: <integer>)
define function unix-lseek
    (fd :: <integer>, position :: <integer>, mode :: <integer>) => (position :: <integer>)
Clone this wiki locally