scheme-script organization created Lassi Kortela 26 Jun 2021 11:15 UTC
Re: scheme-script organization created Vladimir Nikishkin 26 Jun 2021 11:20 UTC
Re: scheme-script organization created Lassi Kortela 26 Jun 2021 11:26 UTC
Re: scheme-script organization created Marc Nieper-Wißkirchen 26 Jun 2021 11:53 UTC
Re: scheme-script organization created Lassi Kortela 26 Jun 2021 12:02 UTC
Re: scheme-script organization created Marc Nieper-Wißkirchen 26 Jun 2021 12:17 UTC
Re: scheme-script organization created Lassi Kortela 26 Jun 2021 12:32 UTC
Re: scheme-script organization created Marc Nieper-Wißkirchen 26 Jun 2021 12:41 UTC
Re: scheme-script organization created Lassi Kortela 26 Jun 2021 13:27 UTC
Re: scheme-script organization created Marc Nieper-Wißkirchen 26 Jun 2021 13:39 UTC
Re: scheme-script organization created Lassi Kortela 26 Jun 2021 14:16 UTC
Re: scheme-script organization created Marc Nieper-Wißkirchen 26 Jun 2021 14:30 UTC
Re: scheme-script organization created Lassi Kortela 26 Jun 2021 14:44 UTC
Re: scheme-script organization created Marc Nieper-Wißkirchen 26 Jun 2021 15:49 UTC
Re: scheme-script organization created Marc Feeley 26 Jun 2021 12:42 UTC
Re: scheme-script organization created Lassi Kortela 26 Jun 2021 12:46 UTC
Re: scheme-script organization created Marc Nieper-Wißkirchen 26 Jun 2021 13:05 UTC
Re: scheme-script organization created Lassi Kortela 26 Jun 2021 13:36 UTC
Re: scheme-script organization created Marc Nieper-Wißkirchen 26 Jun 2021 13:45 UTC
Re: scheme-script organization created Lassi Kortela 26 Jun 2021 13:58 UTC
Re: scheme-script organization created Marc Nieper-Wißkirchen 26 Jun 2021 14:19 UTC
Re: scheme-script organization created Vladimir Nikishkin 26 Jun 2021 14:23 UTC
Re: scheme-script organization created Marc Nieper-Wißkirchen 26 Jun 2021 14:31 UTC
Re: scheme-script organization created Marc Nieper-Wißkirchen 26 Jun 2021 13:07 UTC
Re: scheme-script organization created Marc Nieper-Wißkirchen 26 Jun 2021 19:07 UTC
Re: scheme-script organization created Lassi Kortela 26 Jun 2021 19:26 UTC
Re: scheme-script organization created Marc Nieper-Wißkirchen 27 Jun 2021 08:01 UTC
Re: scheme-script organization created Lassi Kortela 28 Jun 2021 06:47 UTC
Re: scheme-script organization created Marc Feeley 27 Jun 2021 16:36 UTC
Re: scheme-script organization created Marc Nieper-Wißkirchen 27 Jun 2021 19:45 UTC
Re: scheme-script organization created Marc Feeley 27 Jun 2021 21:02 UTC
Re: scheme-script organization created Marc Nieper-Wißkirchen 28 Jun 2021 06:19 UTC
Script semantics and declarations Lassi Kortela 28 Jun 2021 06:59 UTC
Re: Script semantics and declarations Lassi Kortela 28 Jun 2021 07:09 UTC
Re: Script semantics and declarations Marc Nieper-Wißkirchen 28 Jun 2021 07:20 UTC
Re: Script semantics and declarations Lassi Kortela 28 Jun 2021 07:49 UTC
Re: Script semantics and declarations Marc Nieper-Wißkirchen 28 Jun 2021 08:05 UTC
Re: Script semantics and declarations Lassi Kortela 28 Jun 2021 09:16 UTC
Re: Script semantics and declarations Marc Nieper-Wißkirchen 28 Jun 2021 09:32 UTC
Proposed implementation Lassi Kortela 28 Jun 2021 10:27 UTC
Re: Proposed implementation Marc Nieper-Wißkirchen 28 Jun 2021 12:10 UTC
Re: Proposed implementation Marc Feeley 28 Jun 2021 12:15 UTC
Re: Proposed implementation Marc Nieper-Wißkirchen 28 Jun 2021 12:20 UTC
Re: Script semantics and declarations Marc Nieper-Wißkirchen 28 Jun 2021 20:41 UTC
Text substitution macros and multi-file archives Lassi Kortela 28 Jun 2021 07:24 UTC
Re: Text substitution macros and multi-file archives Marc Nieper-Wißkirchen 28 Jun 2021 07:35 UTC
Re: Text substitution macros and multi-file archives Lassi Kortela 28 Jun 2021 08:07 UTC
Re: Text substitution macros and multi-file archives Marc Nieper-Wißkirchen 28 Jun 2021 08:23 UTC
Re: Text substitution macros and multi-file archives Lassi Kortela 28 Jun 2021 08:38 UTC
Re: Text substitution macros and multi-file archives Marc Nieper-Wißkirchen 28 Jun 2021 08:51 UTC

Re: scheme-script organization created Marc Feeley 27 Jun 2021 16:36 UTC

> On Jun 26, 2021, at 3:26 PM, Lassi Kortela <xxxxxx@lassi.io> wrote:
>
> Since Scheme has many standards and implementations, we have the added complexity of dealing with them all. A lot of the groundwork for portable Scheme scripting has already been laid via RnRS and SRFI, and it works fine for many real tasks, given that we can say to the Scheme implementation which RnRS we are using. (Scripts use #! lines, which don't easily support command line flags, so some mechanism of writing something in the source file to distinguish the RnRS edition would be best.) We should also have a mechanism to specify which Scheme implementations the script supports, since a non-trivial script with even simple environmental dependencies is still unlikely to work in a new Scheme implementation with no modifications.
>
> Something like "autoconf on the fly" or "environment manager on the fly" would be a reasonable way to describe the proposed script launcher. It would look at the declarations in the script, figure out something like "the script says it is written in R7RS and supports Chibi, Chicken, and Gauche; we have Chicken; if we use Chicken, the script says it needs eggs A and B, so I will have to call out to chicken-install to ensure those eggs are installed". Finally, it would exec csi (the Chicken interpreter) with the right command line flags to run the script.

I think it would be good to keep the scheme-script “dispatcher" as simple as possible.  The script’s code can use cond-expand to account for differences in the host Scheme system, so that the dispatcher is just a simple exec of the host Scheme interpreter.  All R7RS systems must support cond-expand and SRFI 0 is one of the most widely supported SRFIs and was designed for writing portable code.  Ideally the cond-expand should be used sparingly, to keep the code easy to understand, but it can be used in the initial part of the script to “bootstrap” the code’s portability, for example to determine if the host Scheme is an R7RS system to be able to use (import …) and define-record-type.

For those implementations that don’t have builtin support for SRFI 0 the scheme-script dispatcher could use a system specific approach to provide cond-expand (prepend a macro definition for it, prepend #!r6rs and a suitable (import (srfi 0)), add a command-line option, etc).  If the scheme-script project becomes popular, as I hope it will, implementors of those Scheme systems may be inclined to add support for SRFI 0 either builtin or through a command line option.

Having a lightweight dispatcher will allow easier debugging when using a Scheme system that provides SRFI 0 natively because it will be possible to directly specify debugging related command-line options that would be hard to specified otherwise.  For example with Gambit:

    gsi -:dar _test _define-library/debug myscript arg1 arg2

If the name “scheme-script” is too controversial then the name “scheme-script-ce” should be considered, where the “ce” suffix stresses the fact that the script can assume cond-expand is available.

Marc