• Re: ANN: Dogelog Player 1.1.6 (HTTP Client)

    From Mild Shock@3:633/280.2 to All on Mon Mar 11 05:10:28 2024

    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


    --- MBSE BBS v1.0.8.4 (Linux-x86_64)
    * Origin: ---:- FTN<->UseNet Gate -:--- (3:633/280.2@fidonet)
  • From Mild Shock@3:633/280.2 to All on Mon Mar 11 09:50:05 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



    --- MBSE BBS v1.0.8.4 (Linux-x86_64)
    * Origin: ---:- FTN<->UseNet Gate -:--- (3:633/280.2@fidonet)
  • From Mild Shock@3:633/280.2 to All on Wed Mar 13 12:03:57 2024

    In 1997, Hong Kong judge Wayne Gould saw a partly
    completed puzzle in a Japanese bookshop. Over six years,
    he developed a computer program to produce unique
    puzzles rapidly. The program tries to keep one puzzle
    ahead of you, by generating the next puzzle while you
    are solving the present one.

    In the following we show a Prolog program, where
    the random generation of a Puzzle is performed in
    less than 2 seconds. The Prolog program was mainly
    developed for Dogelog Player. We could test the
    Prolog program also with Prolog systems such as
    SWI-Prolog, Scryer Prolog and Trealla Prolog.

    The smallest domain first variable ordering heuristic
    allowed us to solve some hard problems below a minute.
    Turning the heuristic into a static ordering before
    search gave us a further boost and the baseline for
    randomization. Measurement showed that solving blank
    Sudokus doesn't have a large time variation.

    See also:

    Birthday Paradox and Sudoku Generation https://twitter.com/dogelogch/status/1767714755827908991

    Birthday Paradox and Sudoku Generation
    https://www.facebook.com/groups/dogelog

    --- MBSE BBS v1.0.8.4 (Linux-x86_64)
    * Origin: ---:- FTN<->UseNet Gate -:--- (3:633/280.2@fidonet)
  • From Mild Shock@3:633/280.2 to All on Sun Mar 24 02:42:51 2024

    Dogelog Player is a Prolog system that features
    a generational garbage collector scheme and a
    change_arg/3 primitive built-in. So far the two
    didn’t go together and we had to use a cludge.
    With the upcoming release we provide a proper
    solution based on marking write-barriers.

    Our remembered set on the variable binding trail
    has the benefit that it can reduce itself during
    backtracking. By adopting conductor variables, i.e.
    instantiated variables that are not trailed, from
    formerly Jekejeke Prolog, we could recreate a
    similar benefit for Dogelog Players change_arg/3.

    See also:

    Marking Write-Barriers for Dogelog Player https://twitter.com/dogelogch/status/1771559896741192186

    Marking Write-Barriers for Dogelog Player https://www.facebook.com/groups/dogelog

    --- MBSE BBS v1.0.8.4 (Linux-x86_64)
    * Origin: ---:- FTN<->UseNet Gate -:--- (3:633/280.2@fidonet)
  • From Mild Shock@3:633/280.2 to All on Tue Apr 2 10:19:41 2024

    Starting with the Sudoku solver we have recently
    obtained we developed a Puzzle generator together
    with an interactive game play. The result can be
    run in a web page by means of Dogelog Player 1.2.0
    for JavaScript. Both the Puzzle generator and the
    game play were written in 100% Prolog.

    Regin Filtering from SWI-Prolog CLP(FD) didn’t
    make a dent for generating unique puzzles, all we
    could do was provide 34 clues, and our solver takes
    in the average 1000 ms. We also implemented valid
    move checking by reusing the constraints and an undo
    move queue via dynamic facts.

    See also:

    Game Play of Spock Doku https://twitter.com/dogelogch/status/1774936304335159561

    Game Play of Spock Doku
    https://www.facebook.com/groups/dogelog

    Mild Shock schrieb:

    Dogelog Player is a Prolog system that features
    a generational garbage collector scheme and a
    change_arg/3 primitive built-in. So far the two
    didn’t go together and we had to use a cludge.
    With the upcoming release we provide a proper
    solution based on marking write-barriers.

    Our remembered set on the variable binding trail
    has the benefit that it can reduce itself during
    backtracking. By adopting conductor variables, i.e.
    instantiated variables that are not trailed, from
    formerly Jekejeke Prolog, we could recreate a
    similar benefit for Dogelog Players change_arg/3.

    See also:

    Marking Write-Barriers for Dogelog Player https://twitter.com/dogelogch/status/1771559896741192186

    Marking Write-Barriers for Dogelog Player https://www.facebook.com/groups/dogelog


    --- MBSE BBS v1.0.8.4 (Linux-x86_64)
    * Origin: ---:- FTN<->UseNet Gate -:--- (3:633/280.2@fidonet)