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.
@@ -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 = 518;
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": 518,
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 32 bundled modules that
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 argument
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.