Hi folks!I've read the precious mails, but I still have insufficient information about the potential work of committee E. I guess maybe it's one of the reasons why there's no volunteer.Anyway, we may open a thread of E to make some initial work till we have a chair.
Relevant pre-SRFIs written by me can be found in https://github.com/johnwcowan/r7rs-work and include DatagramChannelsCowan (UDP sockets), GraphicsCanvas (high-level graphics), SyslogCowan (what it says on the tin), and TerminalsCowan (Termbox/TUI interface support). The last can be implemented portably on top of 205, and so it may move to Committee B in future. A notable alternative to something like GraphicsCanvas is the ezdraw server, which is written in Scheme and exchanges S-expressions over a named pipe or local socket (it can also be "linked in").
Do you know where I might find the ezdraw server you mentioned? I've found some mentions of it, but the sites are all obsolete or are actually about something else. I actually built something like that, but using a language-neutral format, just over a year ago: https://github.com/arthurgleckler/nanovg-repl.
Am Do., 17. März 2022 um 22:01 Uhr schrieb John Cowan <co...@ccil.org>:
> E will be concerned with the environment of Scheme programs. In R7RS-small, this includes Sections 6.13 (Input and output) and 6.14 (System interface). In R6RS Libraries, this includes sections 8.1 (Condition types) and 8.2 (Port I/O), as Section 8.3 is the same as R7RS-small's I/O.
>
> Relevant SRFIs are sockets (SRFI 106), 120 (timers), 170 (Posix), 181 (Custom I/O ports, including transcoded ports), 192 (port positioning), 205 (terminal I/O, still draft). SRFIs 181 and 192 are directly modeled on R6RS.
Committees E and F will
be in touch so that F can provide what E needs.
Daphne
--
You received this message because you are subscribed to the Google Groups "scheme-reports-wg2" group.
To unsubscribe from this group and stop receiving emails from it, send an email to scheme-reports-...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/scheme-reports-wg2/4DEF72F0-DD5A-4344-9C1A-FB230EC610B2%40nonceword.org.
Whatever the underlying implementation will be, on the Scheme side we
need a primitive that is able to multiplex different sources, e.g. I/O
port polling, threading condition variables, and the receipt of
signals like SIGTERM. Maybe a high-level API for this can be provided
with futures; as far as these are concerned B and F may need to
coordinate.
The choices currently supported by more than one implementation are:
- SRFI 18
- Some adaptation of Concurrent ML (fibers, etc.)
- any others?
--
You received this message because you are subscribed to the Google Groups "scheme-reports-wg2" group.
To unsubscribe from this group and stop receiving emails from it, send an email to scheme-reports-...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/scheme-reports-wg2/CALnw4L%2Bn25SgfbupZzhnZjk3DMLdnMDqkBkfAUcjeEr2UPuUig%40mail.gmail.com.
--
You received this message because you are subscribed to the Google Groups "scheme-reports-wg2" group.
To unsubscribe from this group and stop receiving emails from it, send an email to scheme-reports-...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/scheme-reports-wg2/CAHrUA35gQof%2BYXwJPgytBNJ39rApXWgPDnutpE2tBLwaT1K2Xg%40mail.gmail.com.
Please also consider the Scheme for the embedded system.The pthread is widely used in RTOS which could be the low-level implementation of the API,
and green-thread is not a good choice for compact embedded systems.
To view this discussion on the web visit https://groups.google.com/d/msgid/scheme-reports-wg2/CAPjoZocyMMzUPh5_j976%2BfJmkTjRKBdZetJ%3DOmmDAnWKLBNXeQ%40mail.gmail.com.
On Fri, Mar 18, 2022 at 8:02 AM Lassi Kortela <la...@lassi.io> wrote:
>
> > No one mentioned epoll? We need a unified I/O multiplex API for
> > poll/epoll/kqueue.
> > This could be based on FFI, but I think we should provide API in E.
>
> That design space changes a lot. io_uring is the hot new thing in Linux.
>
> A basic POSIX poll() like API, which lets you test ports for readability
> and writability and doesn't prescribe an underlying mechanism, might be
> a good start. Expect the dynamic duo of threads and signals to cause
> trouble. Best to try out in a SRFI first.
>
My understanding is not what POSIX or non-POSIX API should be
supported to implement concurrency and parallelism but how they
integrate with Scheme. Some questions:
- Can continuations travel across threads?
- Do parameters travel with their continuations? Hint: continuations
attachments, see https://srfi.schemers.org/srfi-157/
There are several Scheme that implement green threads or parallelism
or both, but there is no clear agreement on what API is the best. The
most common interface is https://srfi.schemers.org/srfi-18/
Alternatives to CML and SRFI-18 is
http://wiki.call-cc.org/eggref/5/gochan and the actor model (Gambit
termite)
There are several Scheme that implement green threads or parallelismor both, but there is no clear agreement on what API is the best. The
most common interface is https://srfi.schemers.org/srfi-18/
My memory of green threads is very dim; as I recall, they were ugly hacks to work around the lack of thread support in the base OS, but otherwise offered zero advantages and zillions of disadvantages. I can't imagine why anyone would want green threads in this day and age, but perhaps I am criminally ignorant on the topic.
My memory of green threads is very dim; as I recall, they were ugly hacks to work around the lack of thread support in the base OS, but otherwise offered zero advantages and zillions of disadvantages. I can't imagine why anyone would want green threads in this day and age, but perhaps I am criminally ignorant on the topic.--linas
Please add your thoughts about it to the SRFI 226 mailing list. As far
as Guile fluids are concerned, from a quick look at them, aren't they
mostly what parameter objects are in R7RS?
--
You received this message because you are subscribed to the Google Groups "scheme-reports-wg2" group.
To unsubscribe from this group and stop receiving emails from it, send an email to scheme-reports-...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/scheme-reports-wg2/CAEYrNrTBaY%3Dm%2BuRSmir9e%3Dr2MENDVE5RELmAPQKNqWro9H-zqQ%40mail.gmail.com.
It doesn't seem appropriate to talk about C/C++ here, so I will skip that discussion, except to say: it's all about performance. Flexibility is great but if an API cannot be implemented so it's fast, then it's not a good API.
or a job that took hours to run, "half" is a big deal. I vaguely recall that parameters were taking tens of thousands of CPU cycles, or more, to be looked up.
On 3/18/22 22:50, Linas Vepstas wrote:
> So, a few cycles to find the TCB, a few more to compute the offset and maybe do a pointer chase.
How does that work when fluids/parameters may be created dynamically?
> Any sort of solution for per-thread storage in scheme, whether fluids or parameters, needs to be no more complex than the above. The scheme equivalent of the TCB for the currently running thread needs to be instantly available, and not require some traversal of an a-list or hash table.
I don't think it is realistic to prohibit a hash table look up.
I note that Java ThreadLocal lookups are implemented in a per-thread hash-table,
indexed by ThreadLocal. This avoids contention/locks, whichis moe important than
avoiding a hash-table lookup.
https://stackoverflow.com/questions/1202444/how-is-javas-threadlocal-implemented-under-the-hood
--
--Per Bothner
p...@bothner.com http://per.bothner.com/
--
in general the tendency to assume that your problem is everybody's problem has to be resisted in standards work.
For an API like phtread's thread-local variables, we are presented
with different options for an API. One possible API could allow
general Scheme objects as keys to thread-local variables; another
possible API choice could be to restrict keys to opaque values
returned by some procedure, say, (thread-local-key). The latter API
can more likely directly map to the pthread API, and won't be less
efficient (up to a constant factor) than C; this may not be true for
the former API.
Marc
--
You received this message because you are subscribed to the Google Groups "scheme-reports-wg2" group.
To unsubscribe from this group and stop receiving emails from it, send an email to scheme-reports-...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/scheme-reports-wg2/CAEYrNrQ8q%3Dz3_2dhiMvS%2BLVQtfW_HVHJpkbHzeJNKv58tLqOZQ%40mail.gmail.com.
Most languages try to be reasonable, but they're not putting design decisions under a performance microscope. Is this where you want to be with scheme?
What's the charter for scheme, really? "To be popular like python" seems unlikely; even MIT is no longer teaching from SICP.
I'd like scheme to be as-fast-as-possible, as what else is it offering the world?
On Sat, Mar 19, 2022 at 3:58 PM Linas Vepstas <linasv...@gmail.com> wrote:Most languages try to be reasonable, but they're not putting design decisions under a performance microscope. Is this where you want to be with scheme?Those who want performance above all else may move away from C++ someday, but it isn't going to be towards any Lisp. Lisp, like Basic and many other languages, has an inferiority complex about speed: at some point the most readily available implementation was a slow interpreter, and the whole language got tarred with that brush.
Although it would be a lot more work, naming the group I for
Implementation and tasking it with delivering a fast implementation of
the language would be optimal.
> Maybe a high-level API for this can be provided with futures
Are any implementers on board with futures? Multi-threading is hard. We
shouldn't add any thread stuff to (any part of) RnRS that isn't portable
and battle-tested.
The choices currently supported by more than one implementation are:
- SRFI 18
- Some adaptation of Concurrent ML (fibers, etc.)
- any others?
--
You received this message because you are subscribed to the Google Groups "scheme-reports-wg2" group.
To unsubscribe from this group and stop receiving emails from it, send an email to scheme-reports-...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/scheme-reports-wg2/95956a2f-3570-7069-2719-4c3023f2aca0%40lassi.io.
SRFI 18/226 threads do report results so there's no missing feature.
thread-terminate!
(I vote to keep thread-terminate!
as the response to the issued question in SRFI-226).It possibly makes sense to discuss a future API in committee B unless
F abandons threads altogether and replaces them with futures covering
the lower-level details. I'm not yet sure about the latter because
SRFI 18 is well-known and has seen plenty of implementations while a
future API will be something necessarily new.
>
> I think SRFI-18 provides the most useful features, if any possible, we can make some advanced features based on it.
Thank you for your input and independent valuation.
Macros are inherently compile-time.
What Scheme does not yet have, though, is an efficient and usable
idiom to write generic algorithms à la those in the C++ template
library.
However, whether an implementation uses first-class modules (using to
build ML functors) or uses an equivalent concept built with only
syntax-case, the problem of how to prevent code bloat remains. The
macro expander is normally stateless meaning that if I request the
same specialization twice, I will usually end up with the code twice
Am So., 27. März 2022 um 19:10 Uhr schrieb Linas Vepstas
<linasv...@gmail.com>:
> ML caught my eye. Please be careful about engineering compile-time-only concepts. When I first dove into CaML, I thought to myself "Ahh! At last! A full-fledged type system (with functors and all the other goodies)!" and very rapidly came to a full halt as I realized that the type system was available **only at compile time** ! Ouch! This makes it unusable, as far as I'm concerned; and when I'm in a bad mood, I will blurt out openly hostile remarks about it.
>
> Compare this to C++, where ideas like dynamic casting (run-time type casting) have taken decades to evolve, but the result is a C++ slowly morphing into a first-class-everything system (when I'm in a bad mood, I say that C++ is re-inventing scheme, badly.) I'm not sure, but some of the latest proposals (that I do not understand) make me think that C++ might even be slowly morphing into an ML-like system, without the compile-time-only lunacy of ML.
>
> So, as to syntax-case and all of the rest of the scheme macro system: its static, hard-wired, compile-time-only, which makes it pretty much totally and utterly useless and unusable for solving any kind of real-world problems. There's little benefit in systems that are ham-strung by mis-guided "compile-time-only" mandates. Make it dynamic and programmable. Don't make it static and hard-wired. Don't build yet more scheme infrastructure on top of the macro system. In that direction lies only a dead-end of quick-set concrete.
I'm not quite sure where you are getting at. Running a Scheme program
means evaluating it.
--
You received this message because you are subscribed to the Google Groups "scheme-reports-wg2" group.
To unsubscribe from this group and stop receiving emails from it, send an email to scheme-reports-...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/scheme-reports-wg2/CAEYrNrQYF6PcEQQD9mOFaVYekY0ftwR_kHf8h3PX9C4mTErxMg%40mail.gmail.com.
Linas Vepstas <linasv...@gmail.com> writes:
> As to Arne's remark about not finding any use, any project: Well,
> here's some. Try to build a chair-purchase requisition system, from
> scratch. Or a bug tracker or an asset tracker. Now try to make it
> distributed, decentralized, so that it runs on cell phones.
That’s what people tend to do with SQL. And tons of boilerplate.
But a bug-tracker … that’s something that’s actually needed direly in
many companies, because they’ll have to replace jira that pushes them to
move into the Atlassian cloud.
Best wishes,
Arne
--
Unpolitisch sein
heißt politisch sein,
ohne es zu merken.
draketo.de
Consolidated reply to several messages in other threads (even if it is
getting very off-topic, even if interesting, especially since opencog
is one the biggest Scheme projects available in the wild).
Knowledge is encoded as an s-expr explains nothing about a) the
knowledge, b) the shape of the knowledge, c) the read and / or write
queries you need to execute, or d) how much time you can give to each
query.
Back at the runtime macros, f-expr, there is no system that implements
it in the way that you imagine. What people do is pile up
interpreters, and wait.
There is a very thick barrier between in-memory representation,
on-disk representation, and single region distributed database,
multi-region distributed database, and some kind of peer-to-peer
distributed database because of latency and other guarantees those
paradigms may or may not provide. That is not bipolar either, stating
there is continuum between in-memory s-expr data, and a peer-to-peer
database that can be written and read by anyone is true within one
particular framework, a framework that I will not describe because
that is not the point of this conversation.
Regarding the example of an application, I think an intelligence
augmentation (aka. second brain, tool for thought...) product is a
better medium to experiment with a s-expr database.
> That rule system -- the state-transition system, and the user-classes, permissions to create new users, permissions to be an admin, this could be, I suppose, replaced by syntax-case or maybe by minikanren, or, I dunno.
Linas, my understanding is that the problem is not how to execute a
given query / rewriting rule, but instead to optimize it at runtime
given runtime knowledge, did I misunderstand?
> The generic concept is that of syntactic transformations on structures.
I will rephrase that as a transformation of human-centered textual
representation of an intent taking the form of s-expr to efficient
executable code.
NB: key-value database, is not an order-key-value store.
NNB: OKVS are older than the NoSQL movement by two decades.
NNNB: I added to my todo to explore how to manipulate s-expr in a way
that is not specific to a particular encoding.
--
You received this message because you are subscribed to the Google Groups "scheme-reports-wg2" group.
To unsubscribe from this group and stop receiving emails from it, send an email to scheme-reports-...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/scheme-reports-wg2/CAL7_Mo-QLup1HJdFWv%2BtigTjwXRHcckmzRJu-84VUPwoZ3QNzQ%40mail.gmail.com.