Dear All,
We are happy to announce a new edition of the
Dogelog player:
- Enhanced library(misc/markup):
The library(misc/markup) has been extended to
include a unified DOM writer abstraction. It can
write to the GUI DOM in the browser, and it is also
possible to write the DOM serialized in XML to a
file. There are a variety of use cases for the
library, e.g. creating static HTML pages.
- New library(misc/vector):
In this library we have brought together everything
related to SVG that was previously scattered in
the libraries library(misc/markup) and library(misc/react).
The new advantages of the extended library (misc/markup)
can also be used here, so the creation of static
SVG pages is now supported.
- New library(util/spin):
The library provides a unified HTTP server
abstraction. There are concrete implementations
for nodeJS using node:http, for PyPy using http_server
and for JDK 21 using Tomcat embedded. Local browser
GET of 50,000 bytes via Prolog atom text lines
enumeration requires approx. 5-10 ms for all Dogelog
Player targets.
Have Fun!
Jan Burse, 21.01.2024, http://www.xlog.ch/
Quick update. This is fun we switched the implementation
of library(util/spin) in Dogelog Player for Java from Tomcat 11
embedded to this thingy here:
Module jdk.httpserver - Package com.sun.net.httpserver https://download.java.net/java/early_access/panama/docs/api/jdk.httpserver/com/sun/net/httpserver/package-summary.html
JEP 408: Simple Web Server
https://openjdk.org/jeps/408
Works fine so far and seems to be an itch speedier. Its
already available in our current devel version 1.1.6 of
Dogelog Player for Java via our GIT.
Mild Shock schrieb:
Dear All,
We are happy to announce a new edition of the
Dogelog player:
- Enhanced library(misc/markup):
The library(misc/markup) has been extended to
include a unified DOM writer abstraction. It can
write to the GUI DOM in the browser, and it is also
possible to write the DOM serialized in XML to a
file. There are a variety of use cases for the
library, e.g. creating static HTML pages.
- New library(misc/vector):
In this library we have brought together everything
related to SVG that was previously scattered in
the libraries library(misc/markup) and library(misc/react).
The new advantages of the extended library (misc/markup)
can also be used here, so the creation of static
SVG pages is now supported.
- New library(util/spin):
The library provides a unified HTTP server
abstraction. There are concrete implementations
for nodeJS using node:http, for PyPy using http_server
and for JDK 21 using Tomcat embedded. Local browser
GET of 50,000 bytes via Prolog atom text lines
enumeration requires approx. 5-10 ms for all Dogelog
Player targets.
Have Fun!
Jan Burse, 21.01.2024, http://www.xlog.ch/
We describe the implementation of a dynamical HTML
page in Prolog that displays the moon phase seen from
the northern hemisphere for a given day. The code
demonstrates a HTTP server addition to Dogelog Player,
a Prolog system 100% written in Prolog itself available
for the platforms JavaScript, Python and Java.
We spent one morning to create a dynamical HTML page,
that shows the moon phase of a day via SVG. The coding
is similar to how one is usually dealing with a TTY,
lowering the learning curve. The single Prolog text
can be used to serve the HTML page unchanged via
JavaScript, Python or Java.
See also:
Moon Server with Dogelog Player https://twitter.com/dogelogch/status/1749847817579827503
Moon Server with Dogelog Player
https://www.facebook.com/groups/dogelog
Mild Shock schrieb:
Quick update. This is fun we switched the implementation
of library(util/spin) in Dogelog Player for Java from Tomcat 11
embedded to this thingy here:
Module jdk.httpserver - Package com.sun.net.httpserver
https://download.java.net/java/early_access/panama/docs/api/jdk.httpserver/com/sun/net/httpserver/package-summary.html
JEP 408: Simple Web Server
https://openjdk.org/jeps/408
Works fine so far and seems to be an itch speedier. Its
already available in our current devel version 1.1.6 of
Dogelog Player for Java via our GIT.
Mild Shock schrieb:
Dear All,
We are happy to announce a new edition of the
Dogelog player:
- Enhanced library(misc/markup):
The library(misc/markup) has been extended to
include a unified DOM writer abstraction. It can
write to the GUI DOM in the browser, and it is also
possible to write the DOM serialized in XML to a
file. There are a variety of use cases for the
library, e.g. creating static HTML pages.
- New library(misc/vector):
In this library we have brought together everything
related to SVG that was previously scattered in
the libraries library(misc/markup) and library(misc/react).
The new advantages of the extended library (misc/markup)
can also be used here, so the creation of static
SVG pages is now supported.
- New library(util/spin):
The library provides a unified HTTP server
abstraction. There are concrete implementations
for nodeJS using node:http, for PyPy using http_server
and for JDK 21 using Tomcat embedded. Local browser
GET of 50,000 bytes via Prolog atom text lines
enumeration requires approx. 5-10 ms for all Dogelog
Player targets.
Have Fun!
Jan Burse, 21.01.2024, http://www.xlog.ch/
We already reported the new capability
that we can read async from streams. We made
this available for the file system reads on
nodeJS. We report here about a further progress
extending the async approach to HTTP fetch in
the browser and on nodeJS.
Multiple downloads make a case for async I/O
since RFC 2616 limits the number of connections.
HTTP/2 allows to send off multiple requests
which async I/O can capitalize. We demonstrate
quasi-parallel execution in Dogelog Player for
both the browser and nodeJS.
See also:
Async HTTP Client for Dogelog Player https://twitter.com/dogelogch/status/1756144112946807135
Async HTTP Client for Dogelog Player
https://www.facebook.com/groups/dogelog
The idea is that threads use a bouncer semaphore to get a permission to execute and thus become “coroutines”.
Well they have suspend/resume semantics. They
are not continuations. They aim is to provide
async/await and not only setTimeout().
As a result you don't need to write libraries
with a continuation parameters. This is very unlike
nonsense such as the express web framework.
stackfulness
In contrast to a stackless coroutine a stackful
coroutine can be suspended from within a nested
stackframe. Execution resumes at exactly the same
point in the code where it was suspended before.
stackless
With a stackless coroutine, only the top-level routine
may be suspended. Any routine called by that top-level
routine may not itself suspend. This prohibits
providing suspend/resume operations in routines within
a general-purpose library. https://www.boost.org/doc/libs/1_57_0/libs/coroutine/doc/html/coroutine/intro.html#coroutine.intro.stackfulness
Lawrence D'Oliveiro schrieb:
On Tue, 20 Feb 2024 17:09:53 +0100, Mild Shock wrote:
The idea is that threads use a bouncer semaphore to get a permission to
execute and thus become “coroutines”.
But they are still stackful coroutines, not stackless.
On Tue, 20 Feb 2024 17:09:53 +0100, Mild Shock wrote:
The idea is that threads use a bouncer semaphore to get a permission to
execute and thus become “coroutines”.
But they are still stackful coroutines, not stackless.
Basically you can programm in so called "DIRECT STYLE"
even if async I/O is involved, which might be even a
shock for functional programming language users
that are used to a lot of nonsense.
See also:
Async/Await for the Monadic Programmer https://www.youtube.com/watch?v=OH5cxLNTTPo
DIRECT STYLE SCALA Scalar Conference 2023 https://www.youtube.com/watch?v=0Fm0y4K4YO8
Mild Shock schrieb:
Well they have suspend/resume semantics. They
are not continuations. They aim is to provide
async/await and not only setTimeout().
As a result you don't need to write libraries
with a continuation parameters. This is very unlike
nonsense such as the express web framework.
stackfulness
In contrast to a stackless coroutine a stackful
coroutine can be suspended from within a nested
stackframe. Execution resumes at exactly the same
point in the code where it was suspended before.
stackless
With a stackless coroutine, only the top-level routine
may be suspended. Any routine called by that top-level
routine may not itself suspend. This prohibits
providing suspend/resume operations in routines within
a general-purpose library.
https://www.boost.org/doc/libs/1_57_0/libs/coroutine/doc/html/coroutine/intro.html#coroutine.intro.stackfulness
Lawrence D'Oliveiro schrieb:
On Tue, 20 Feb 2024 17:09:53 +0100, Mild Shock wrote:
The idea is that threads use a bouncer semaphore to get a permission to >>>> execute and thus become “coroutines”.
But they are still stackful coroutines, not stackless.
On Tue, 20 Feb 2024 17:09:53 +0100, Mild Shock wrote:
The idea is that threads use a bouncer semaphore to get a permission to
execute and thus become “coroutines”.
But they are still stackful coroutines, not stackless.
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 374 |
Nodes: | 16 (2 / 14) |
Uptime: | 04:56:52 |
Calls: | 7,966 |
Files: | 13,011 |
Messages: | 5,814,867 |