Commit Graph

122 Commits

Author SHA1 Message Date
mainzelm 8eb6a07ec3 Subject: Extend type<->sexp conversion to variable type
type->sexp was not capable of converting the variable type to a
sexp. This caused problems if the module system wanted to tell the
user that the types of exported bindings did not match:

config> (define-structure foo (export (bar :syntax)) (open scheme) (begin (define bar 1)))
; no values returned
config> ,user
> ,open foo

Error: exception
       wrong-type-argument
       (checked-record-ref '(variable #{Type :value #f #f}) '#{Record-type 14 meta-type} 1)

I've now extended TYPE->SEXP by a check for the variable type and let
it produce a list with 'VARIABLE as first and the actual type as
second element. Likewise, I extended SEXP->TYPE to produce a variable
type if 'VARIABEL is the first element of a list.

This seems to work but a second look by someone who really understands
the type system would be appreciated.

(Merge from s48 rev 423)
2003-08-04 07:32:02 +00:00
mainzelm 0951ec5b42 check-nargs= --> protocol 2003-05-05 06:38:32 +00:00
mainzelm bd70ccb03d Limited disclosing of byte-vectors to the first 16 elements. 2003-04-14 11:06:55 +00:00
mainzelm 766ba98a31 Ensure all output of ,collect goes to (command-output). 2003-03-18 12:51:08 +00:00
sperber f28a5f7dbb Merge rev 120 from Scheme 48 svn repo:
Modified:
   s48/tuebingen/trunk/scheme/rts/jar-defrecord.scm
Log:
Subject: Fix hygiene bug in DEFINE-RECORD-TYPE

DEFINE-RECORD-TYPE would expand into the wrong thing if there was a
field name identical to the name of the type that appears as a
constructor argument; the constructor used that same name as a
parameter, shadowing the name for the type.  The fix was to rename
those parameters before including them in the output.
2003-03-18 12:48:53 +00:00
mainzelm 855cffa3c7 Provide LOAD-PORT to load forms from a port. 2003-03-13 07:49:49 +00:00
mainzelm c936bcce29 make-srfi-19 is not a structure 2003-03-11 08:44:37 +00:00
mainzelm 27b8f2e2a6 Added SRFI-19 to the list of available srfis. 2003-03-10 13:30:33 +00:00
mainzelm 075630989e Make srfi-19 a functor and move the definition back to scheme/srfi. 2003-03-10 13:27:09 +00:00
sperber a39ab12bc0 Register SRFI 37 with the implementation of SRFI 7. 2003-02-28 13:08:07 +00:00
sperber 5788fb4790 Add implementation of SRFI 31. 2003-02-28 13:05:04 +00:00
mainzelm 57463ce596 Make SPOON an alias for FORK-THREAD. 2003-02-25 13:15:40 +00:00
mainzelm 68072b171f Moved srfi-19.scm to scsh/. 2003-02-25 12:58:37 +00:00
mainzelm 6918efd4a4 New version from Will Fitzgerald adapted to scsh. 2003-02-25 09:32:05 +00:00
mainzelm 1b63d1f270 Use with-sigevents to initialize the sigevent system. This also keeps
track wether the thunk retuned in which case WAITING-FOR-SIGEVENT?
will now always return #f.

This makes it possible for the root-scheduler to stop even though
there are threads waiting for signals.
2003-02-25 08:11:32 +00:00
mainzelm 1d31250208 Added SRFI-37. 2003-02-21 09:28:42 +00:00
mainzelm 28db39b1c5 Fixes from S48 1.0: STRUCTURE-CLIENTS may contain both, packages and
structures.
2003-02-13 09:52:13 +00:00
mainzelm 482cc64477 + removed two bogus inexact->exact
+ fixed typo
2003-02-07 16:02:11 +00:00
mainzelm 93439648aa First try to fix the reference implementation for SRFI 19. 2003-02-04 13:33:21 +00:00
sperber ad18648afa Fix some problems with WAIT-FOR-CHANNELS:
- Initialize READY-{READ,WRITE}-CHANNELS to () instead of #f, because
  the #f's don't get overwritten when the whole thing is interrupted.
- Fix the cleanup code which was conditionalized the wrong way.
2003-01-17 13:30:26 +00:00
mainzelm 6a8b7f6145 When closing an output port, capture any errors while flushing the
port and try to close the port immediately instead.
2003-01-08 09:26:58 +00:00
mainzelm 804362834b Extend with-errno to capture all I/O exceptions of the VM:
+ add errno as first argument to raise-exception os-error in prim-io.scm

+ capture os-error in with-errno-handler* and adjust exception
  arguments to fit errno-handlers
2003-01-08 09:16:47 +00:00
mainzelm 5da13e0f55 Merged definition of byte-vector from S48 1.0. 2003-01-07 10:30:37 +00:00
sperber e2557c7200 Add forgotten OPEN clause for SIGNALS in READING-FORMS. 2002-12-19 10:02:31 +00:00
mainzelm 2fcc149269 Added forgotten export of srfi-13: string-concatenate-reverse/shared 2002-12-17 15:49:54 +00:00
sperber 69a2031350 Replace half-assed DYNAMIC-WIND protection of input port by the one
Richard Kelsey suggested for Scheme 48.
2002-12-17 13:50:14 +00:00
sperber 4c90a345ec In READ-FORMS, open/close input port in DYNAMIC-WIND before/after
thunks.
2002-12-16 11:00:11 +00:00
sperber 3a1439a16e Remove warning message "Warning: dropping ignored channel i/o result"
because it can be legitimately triggered by WAIT-FOR-CHANNELS.
2002-12-11 12:40:29 +00:00
sperber 6fc80dfb4b Fix typo: remove double application of MAKE-I/O-COMPLETION-HANDLER. 2002-11-12 13:13:02 +00:00
mainzelm a1e9e54bbc Add lookup-external from recent S48 (it's already described in the manual). 2002-11-07 09:43:29 +00:00
mainzelm 17b1a55c8b + Factor out pending interrupts into a separate package.
+ Let vm-channel-abort clear the pending-i/o interrupt if the queue became empty
2002-09-27 12:44:43 +00:00
sperber 5b47488938 Include half-assed implementation of ADD-PENDING-CHANNEL. 2002-09-19 07:08:16 +00:00
sperber d14e638e10 Replace hacked-up VM-CHANNEL-ABORT by a version that's simpler and
closer to the original.
2002-09-19 07:07:40 +00:00
mainzelm 9950aa7205 Wrap an additional (lambda a ...) around the application of (terminate-current-thread) in terminate-thread! as the continuation may provide any number of values 2002-09-18 19:16:23 +00:00
sperber d21334de83 Keep separate queues for input and output channels, so the VM doesn't
get confused handling events/interrupts.
I despise myself.
2002-09-18 14:56:31 +00:00
mainzelm 5cb76fd27b Replace call to channel-has-waiter? by channel-check-waiter. 2002-09-17 21:22:41 +00:00
mainzelm 3c07ebb50f PROTECT-PORT-OP saves the return value of CLOSE so better return (if #f #f) than (values). 2002-09-11 14:38:56 +00:00
mainzelm 024d938e39 Added SRFI 25, 26, 27, 28, 30. 2002-09-11 14:34:58 +00:00
mainzelm cd9907c68f Fixed bug in the reference implementation reported by Vladimir Tsichevski on c.l.s.. 2002-09-09 08:03:59 +00:00
sperber e3d6f985fc Put back an accidentally elided ELSE branch in PLACEHOLDER-SET! 2002-09-06 14:11:36 +00:00
mainzelm 854f9d18e1 Removed duplicate definition of S48_ENTER/EXTRACT_BOOLEAN. 2002-09-06 11:57:53 +00:00
mainzelm 1599136ffa Added map, for-each, member, assoc to srfi-1-interface 2002-09-04 08:23:47 +00:00
sperber 33c14d7901 First stab at implementing SELECT/SELECT!:
- extend the VM interrupts to distinguish between read and write
  events
- add new ADD-PENDING-CHANNEL instruction to the VM
- add WAIT-FOR-CHANNELS procedure to the run-time system
- implement SELECT and SELECT! on top of that in newports.scm

This runs some basic tests, but in general should be considered
largely untested.

Moreover, SELECT/SELECT! never detect any exceptional conditions---the
returned vectors are always empty.  This is because the VM doesn't
really track those, and it's unclear whether it would be worth the
effort.
2002-08-20 14:03:01 +00:00
sperber ac343ba970 Replace Martin's implementation of selective blocking by the one in
Scheme 48 1.0.1.

Namely, instead of associating a list of queues with every thread, we
associate a single cell, holding the thread.  That cell is stored in
thread queues, and once a thread is made runnable again, the cell is
set to #f.  The thread-queue accessors ignore cells containing #f.

Implement an experimental OBTAIN-LOCK-MULTIPLE to test the whole
thing.
2002-08-16 14:11:50 +00:00
mainzelm 8f1dfb6935 Ensure that newspace is the space in front when dumping an image the
prevent relocation on startup.
2002-08-15 16:35:26 +00:00
mainzelm 4e5b87209d Added ignore-port-locks? flag to output-port-forcers and use it in
flush-all-ports-no-threads.
2002-06-26 11:25:33 +00:00
mainzelm bbfd094bbd Queue os-signal events. 2002-06-10 08:46:08 +00:00
mainzelm aed248d24b First version of libscsh. 2002-05-16 14:50:46 +00:00
sperber 1d35626709 Redo the forking-without-the-threads fix in a way not involving
command levels (as there *are* no command levels for things like scsh
-c):

There's now a new asynchronous event, similar to SPAWN, called NARROW.
It spawns off a new scheduler with just one thread (which runs the
thunk provided as an argument to NARROW) and blocks the current one
until the narrowed scheduler finishes.

For this to work, two schedulers need to be in place: the root
scheduler which performs the housekeeping, and another one inside that
which is the one the program uses---otherwise it's the root scheduler
that's blocked, and that means no housekeeping gets done.  This is
trivially the case for interactive mode, as the command-levels all
have their own schedulers, but we also need to make sure scsh's entry
point fires up its own initial scheduler.
2002-05-03 13:42:36 +00:00
sperber 2a302178e6 Provide names for housekeeping threads for better debugging. 2002-05-03 13:36:15 +00:00