eyeprolog 1.5.19 → 1.5.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/package.json +1 -1
- package/src/io.js +32 -2
- package/src/iso.js +29 -13
- package/src/lib/sockets.pl +48 -0
- package/src/library-autoload-index.js +6 -0
- package/src/sockets-host.js +298 -0
- package/src/sockets-worker.js +235 -0
- package/src/standard-library.js +6 -1
- package/test/run-regression.mjs +57 -11
- package/test/scryer-library-exports.json +7 -0
- package/the-art-of-eyeprolog.md +485 -391
- package/tools/generate-predicate-reference.mjs +1 -1
- package/tools/predicate-reference.json +46 -1
- package/why-eyeprolog.md +2 -3
|
@@ -11,7 +11,7 @@ const bookFile = path.join(root, 'the-art-of-eyeprolog.md');
|
|
|
11
11
|
const START = '<!-- eyeprolog-predicate-reference:start -->';
|
|
12
12
|
const END = '<!-- eyeprolog-predicate-reference:end -->';
|
|
13
13
|
const CHAPTER_END = '\n## 40. Running EyeProlog: command line and corpus';
|
|
14
|
-
const EXPECTED_COUNT =
|
|
14
|
+
const EXPECTED_COUNT = 523;
|
|
15
15
|
const allowedSolutions = new Set([
|
|
16
16
|
'det', 'semidet', 'multi', 'nondet', 'delayed', 'meta', 'mode-dependent',
|
|
17
17
|
'declaration', 'terminal',
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema": 1,
|
|
3
|
-
"surface_count":
|
|
3
|
+
"surface_count": 523,
|
|
4
4
|
"generated_from": {
|
|
5
5
|
"core_registry": "src/iso.js createDefaultRegistry()",
|
|
6
6
|
"library_index": "src/library-autoload-index.js"
|
|
@@ -1455,6 +1455,15 @@
|
|
|
1455
1455
|
"source": "src/iso.js",
|
|
1456
1456
|
"profile": "core"
|
|
1457
1457
|
},
|
|
1458
|
+
{
|
|
1459
|
+
"indicator": "current_hostname/1",
|
|
1460
|
+
"origin": "library(sockets)",
|
|
1461
|
+
"call": "current_hostname(-HostName)",
|
|
1462
|
+
"solutions": "det",
|
|
1463
|
+
"contract": "Unifies HostName with the local host name used by the networking runtime.",
|
|
1464
|
+
"source": "src/lib/sockets.pl; src/sockets-host.js",
|
|
1465
|
+
"profile": "library"
|
|
1466
|
+
},
|
|
1458
1467
|
{
|
|
1459
1468
|
"indicator": "current_input/1",
|
|
1460
1469
|
"origin": "ISO core",
|
|
@@ -4029,6 +4038,42 @@
|
|
|
4029
4038
|
"source": "src/lib/primes.pl",
|
|
4030
4039
|
"profile": "library"
|
|
4031
4040
|
},
|
|
4041
|
+
{
|
|
4042
|
+
"indicator": "socket_client_open/3",
|
|
4043
|
+
"origin": "library(sockets)",
|
|
4044
|
+
"call": "socket_client_open(+Address,-Stream,+Options)",
|
|
4045
|
+
"solutions": "semidet",
|
|
4046
|
+
"contract": "Opens a TCP connection to Address:Port and returns a bidirectional stream using the requested stream options.",
|
|
4047
|
+
"source": "src/lib/sockets.pl; src/sockets-host.js",
|
|
4048
|
+
"profile": "library"
|
|
4049
|
+
},
|
|
4050
|
+
{
|
|
4051
|
+
"indicator": "socket_server_accept/4",
|
|
4052
|
+
"origin": "library(sockets)",
|
|
4053
|
+
"call": "socket_server_accept(+ServerSocket,-Client,-Stream,+Options)",
|
|
4054
|
+
"solutions": "det",
|
|
4055
|
+
"contract": "Waits for the next TCP connection, returning the peer address and a bidirectional stream for that connection.",
|
|
4056
|
+
"source": "src/lib/sockets.pl; src/sockets-host.js",
|
|
4057
|
+
"profile": "library"
|
|
4058
|
+
},
|
|
4059
|
+
{
|
|
4060
|
+
"indicator": "socket_server_close/1",
|
|
4061
|
+
"origin": "library(sockets)",
|
|
4062
|
+
"call": "socket_server_close(+ServerSocket)",
|
|
4063
|
+
"solutions": "det",
|
|
4064
|
+
"contract": "Stops accepting new TCP connections on ServerSocket without closing streams already accepted from it.",
|
|
4065
|
+
"source": "src/lib/sockets.pl; src/sockets-host.js",
|
|
4066
|
+
"profile": "library"
|
|
4067
|
+
},
|
|
4068
|
+
{
|
|
4069
|
+
"indicator": "socket_server_open/2",
|
|
4070
|
+
"origin": "library(sockets)",
|
|
4071
|
+
"call": "socket_server_open(?Address,-ServerSocket)",
|
|
4072
|
+
"solutions": "semidet",
|
|
4073
|
+
"contract": "Opens a TCP listening socket; an unbound port requests an ephemeral port and is unified with the selected port.",
|
|
4074
|
+
"source": "src/lib/sockets.pl; src/sockets-host.js",
|
|
4075
|
+
"profile": "library"
|
|
4076
|
+
},
|
|
4032
4077
|
{
|
|
4033
4078
|
"indicator": "sort/2",
|
|
4034
4079
|
"origin": "ISO core",
|
package/why-eyeprolog.md
CHANGED
|
@@ -163,7 +163,7 @@ after parsing, so libraries that introduce operators still require an explicit
|
|
|
163
163
|
|
|
164
164
|
That compatibility boundary is intentionally driven by observable upstream
|
|
165
165
|
interfaces rather than by library names alone. The compatibility layer is now
|
|
166
|
-
systematic rather than a collection of one-off ports: all
|
|
166
|
+
systematic rather than a collection of one-off ports: all 33 bundled modules that
|
|
167
167
|
overlap Scryer's current `src/lib/` tree are checked against the frozen export
|
|
168
168
|
snapshot in `test/scryer-library-exports.json` and cover that public predicate
|
|
169
169
|
surface. Runtime-dependent primitives have explicit ownership: code in
|
|
@@ -176,8 +176,7 @@ intersection remains a separate portability profile; its crypto overlap is still
|
|
|
176
176
|
`hex_bytes/2`, `crypto_n_random_bytes/2`, and `crypto_data_hash/3`. Hashing, KDF,
|
|
177
177
|
authenticated encryption, Ed25519, and X25519 use Node's crypto backend; secure
|
|
178
178
|
random bytes also use Web Crypto when available, and unsupported operations
|
|
179
|
-
report `resource_error(crypto)`. Filesystem, environment, shell, PID, and
|
|
180
|
-
operations are likewise Node host services rather than a simulated browser OS.
|
|
179
|
+
report `resource_error(crypto)`. Filesystem, environment, shell, PID, argument, and TCP socket operations are likewise Node host services rather than simulated browser facilities.
|
|
181
180
|
EyeProlog still has integer and float processor numbers only, so non-integral
|
|
182
181
|
rational conversion results use a documented structural `rdiv(N,D)` form rather
|
|
183
182
|
than silently extending arithmetic semantics.
|