• ANN: Dogelog Player 1.1.6 (HTTP Client)

    From Mild Shock@21:1/5 to All on Thu Mar 7 18:09:49 2024
    Dear All,

    We are happy to announce a new edition
    of the Dogelog player:

    - Enhanced '$YIELD'/1:
    Previously the '$YIELD'/1 instruction was hard coded
    to understand an integer for sleep/1 and an atom for
    native library loading. The implementation has been
    change to accept a Promise object, known from
    JavaScript. Emulations were made available for
    Java and Python.

    - Async I/O:
    Based on the new '$YIELD'/1 and a buffer fast path
    idea, the console reading, file property and file
    reading have been asyncified. There is no change in
    the Prolog API, files are still to be opened via the
    ISO core open/3 and accessed via ISO core get_code/2
    respectively ISO core peek_code/2. But input can now
    be executed quasi-parallel by multiple tasks.

    - HTTP client:
    The ISO core open/4 has been moved to the library(spin).
    The support of the HTTP and HTTPS protocol in open/3
    and open/4, has been extended from the JavaScript
    browser to the JavaScript command line (by means of
    new fetch in nodejs >21). Further supported targets
    are now Python and Java (by means of new HTTP client
    in JDK >21).

    Have Fun!

    Jan Burse, http://www.xlog.ch/ , 07.03.2024

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mild Shock@21:1/5 to Mild Shock on Sun Mar 10 23:49:16 2024
    Small implementation node about the new HTTP client
    in Dogelog Player for JavaScript. I am using fetch()
    everywhere. No need to get help from libraries such as:

    Axios is a promise-based HTTP Client for node.js
    and the browser. It is isomorphic (= it can run in
    the browser and nodejs with the same codebase).
    On the server-side it uses the native node.js http
    module, while on the client (browser) it uses XMLHttpRequests.
    https://axios-http.com/docs/intro

    First of all XMLHttpRequests is deprecated in the
    browser, use fetch() instead. And nodejs has fetch()
    since release 21.x.x as well. So they have become
    isomorphic making AXIOS obsolete:

    Notable Changes - Oct 17, 2023
    The recent update to Node.js, version 21, includes
    an important change to the fetch module as well as
    WebStreams . Both modules were marked as stable
    after a recent update.
    https://nodejs.org/en/blog/announcements/v21-release-announce

    Mild Shock schrieb:

    Dogelog Player is a Prolog system that is 100% written
    in Prolog itself. It is avsailable for the JavaScript,
    Python and Java platform. We show how the stable
    ordering of Prolog variables in Dogelog Player allows
    highly efficient constraint solving approaches.

    We convert the undirected graph into a directed graph
    and create adjacency lists. This inequality graph doesn’t
    have the same delayed evaluation overhead than
    (#=)/2 and dif/2. We demonstrate map coloring and
    sudoku solving. Further improvements in a
    subsequent article.

    See also:

    Map Coloring and Sudoku Solving https://twitter.com/dogelogch/status/1766885890712883276

    Map Coloring and Sudoku Solving
    https://www.facebook.com/groups/dogelog

    Mild Shock schrieb:
    Dear All,

    We are happy to announce a new edition
    of the Dogelog player:

    - Enhanced '$YIELD'/1:
       Previously the '$YIELD'/1 instruction was hard coded
    to understand an integer for sleep/1 and an atom for
    native library loading. The implementation has been
    change to accept a Promise object, known from
    JavaScript. Emulations were made available for
    Java and Python.

    - Async I/O:
       Based on the new '$YIELD'/1 and a buffer fast path
    idea, the console reading, file property and file
    reading have been asyncified. There is no change in
    the Prolog API, files are still to be opened via the
    ISO core open/3 and accessed via ISO core get_code/2
    respectively ISO core peek_code/2. But input can now
    be executed quasi-parallel by multiple tasks.

    - HTTP client:
       The ISO core open/4 has been moved to the library(spin).
    The support of the HTTP and HTTPS protocol in open/3
    and open/4, has been extended from the JavaScript
    browser to the JavaScript command line (by means of
    new fetch in nodejs >21). Further supported targets
    are now Python and Java (by means of new HTTP client
    in JDK >21).

    Have Fun!

    Jan Burse, http://www.xlog.ch/ , 07.03.2024


    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)