@shd101wyy/yo 0.1.25 → 0.1.27

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.
Files changed (194) hide show
  1. package/.github/skills/yo-async-effects/SKILL.md +4 -4
  2. package/.github/skills/yo-async-effects/async-effects-recipes.md +40 -40
  3. package/.github/skills/yo-core-patterns/SKILL.md +1 -1
  4. package/.github/skills/yo-core-patterns/core-patterns-cheatsheet.md +30 -26
  5. package/.github/skills/yo-project-workflow/SKILL.md +6 -3
  6. package/.github/skills/yo-project-workflow/workflow-cheatsheet.md +34 -11
  7. package/.github/skills/yo-syntax/SKILL.md +7 -6
  8. package/.github/skills/yo-syntax/syntax-cheatsheet.md +78 -60
  9. package/.github/skills/yo-wasm-integration/wasm-integration-cheatsheet.md +3 -3
  10. package/README.md +10 -8
  11. package/out/cjs/index.cjs +583 -567
  12. package/out/cjs/yo-cli.cjs +664 -632
  13. package/out/cjs/yo-lsp.cjs +510 -485
  14. package/out/esm/index.mjs +538 -522
  15. package/out/types/src/codegen/codegen-c.d.ts +2 -2
  16. package/out/types/src/codegen/functions/collection.d.ts +2 -2
  17. package/out/types/src/codegen/functions/context.d.ts +3 -2
  18. package/out/types/src/codegen/types/collection.d.ts +2 -2
  19. package/out/types/src/codegen/utils/index.d.ts +3 -1
  20. package/out/types/src/doc/builder.d.ts +2 -2
  21. package/out/types/src/evaluator/calls/closure-type.d.ts +2 -2
  22. package/out/types/src/evaluator/calls/record-type.d.ts +11 -0
  23. package/out/types/src/evaluator/context.d.ts +8 -9
  24. package/out/types/src/evaluator/index.d.ts +3 -3
  25. package/out/types/src/evaluator/types/record.d.ts +14 -0
  26. package/out/types/src/evaluator/types/validation.d.ts +2 -2
  27. package/out/types/src/evaluator/values/anonymous-module.d.ts +5 -5
  28. package/out/types/src/evaluator/values/impl.d.ts +1 -1
  29. package/out/types/src/expr.d.ts +1 -4
  30. package/out/types/src/formatter.d.ts +11 -0
  31. package/out/types/src/function-value.d.ts +1 -1
  32. package/out/types/src/lsp/document-manager.d.ts +1 -1
  33. package/out/types/src/lsp/formatting.d.ts +2 -0
  34. package/out/types/src/module-manager.d.ts +3 -3
  35. package/out/types/src/tests/formatter.test.d.ts +1 -0
  36. package/out/types/src/types/creators.d.ts +3 -4
  37. package/out/types/src/types/definitions.d.ts +8 -19
  38. package/out/types/src/types/guards.d.ts +3 -3
  39. package/out/types/src/types/tags.d.ts +0 -1
  40. package/out/types/src/types/utils.d.ts +1 -1
  41. package/out/types/src/value-tag.d.ts +0 -1
  42. package/out/types/src/value.d.ts +6 -13
  43. package/out/types/tsconfig.tsbuildinfo +1 -1
  44. package/package.json +1 -1
  45. package/std/alg/hash.yo +13 -21
  46. package/std/allocator.yo +25 -40
  47. package/std/async.yo +3 -7
  48. package/std/build.yo +105 -151
  49. package/std/cli/arg_parser.yo +184 -169
  50. package/std/collections/array_list.yo +350 -314
  51. package/std/collections/btree_map.yo +142 -131
  52. package/std/collections/deque.yo +132 -128
  53. package/std/collections/hash_map.yo +542 -566
  54. package/std/collections/hash_set.yo +623 -687
  55. package/std/collections/linked_list.yo +275 -293
  56. package/std/collections/ordered_map.yo +113 -85
  57. package/std/collections/priority_queue.yo +73 -73
  58. package/std/crypto/md5.yo +191 -95
  59. package/std/crypto/random.yo +56 -64
  60. package/std/crypto/sha256.yo +151 -107
  61. package/std/encoding/base64.yo +87 -81
  62. package/std/encoding/hex.yo +43 -50
  63. package/std/encoding/html.yo +56 -81
  64. package/std/encoding/html_char_utils.yo +7 -13
  65. package/std/encoding/html_entities.yo +2248 -2253
  66. package/std/encoding/json.yo +316 -224
  67. package/std/encoding/punycode.yo +86 -116
  68. package/std/encoding/toml.yo +67 -66
  69. package/std/encoding/utf16.yo +37 -44
  70. package/std/env.yo +62 -91
  71. package/std/error.yo +12 -20
  72. package/std/fmt/display.yo +5 -9
  73. package/std/fmt/index.yo +8 -14
  74. package/std/fmt/to_string.yo +330 -315
  75. package/std/fmt/writer.yo +58 -87
  76. package/std/fs/dir.yo +83 -102
  77. package/std/fs/file.yo +147 -180
  78. package/std/fs/metadata.yo +45 -78
  79. package/std/fs/temp.yo +55 -65
  80. package/std/fs/types.yo +27 -40
  81. package/std/fs/walker.yo +53 -68
  82. package/std/gc.yo +5 -8
  83. package/std/glob.yo +30 -43
  84. package/std/http/client.yo +107 -120
  85. package/std/http/http.yo +106 -96
  86. package/std/http/index.yo +4 -6
  87. package/std/imm/list.yo +88 -93
  88. package/std/imm/map.yo +528 -464
  89. package/std/imm/set.yo +52 -57
  90. package/std/imm/sorted_map.yo +340 -286
  91. package/std/imm/sorted_set.yo +57 -63
  92. package/std/imm/string.yo +404 -345
  93. package/std/imm/vec.yo +173 -181
  94. package/std/io/reader.yo +3 -6
  95. package/std/io/writer.yo +4 -8
  96. package/std/libc/assert.yo +5 -9
  97. package/std/libc/ctype.yo +32 -22
  98. package/std/libc/dirent.yo +26 -25
  99. package/std/libc/errno.yo +164 -90
  100. package/std/libc/fcntl.yo +52 -45
  101. package/std/libc/float.yo +66 -44
  102. package/std/libc/limits.yo +42 -33
  103. package/std/libc/math.yo +53 -82
  104. package/std/libc/signal.yo +72 -47
  105. package/std/libc/stdatomic.yo +217 -188
  106. package/std/libc/stdint.yo +5 -29
  107. package/std/libc/stdio.yo +5 -29
  108. package/std/libc/stdlib.yo +32 -39
  109. package/std/libc/string.yo +5 -23
  110. package/std/libc/sys/stat.yo +58 -56
  111. package/std/libc/time.yo +5 -19
  112. package/std/libc/unistd.yo +5 -20
  113. package/std/libc/wctype.yo +6 -9
  114. package/std/libc/windows.yo +26 -30
  115. package/std/log.yo +41 -55
  116. package/std/net/addr.yo +102 -97
  117. package/std/net/dns.yo +27 -28
  118. package/std/net/errors.yo +50 -49
  119. package/std/net/tcp.yo +113 -124
  120. package/std/net/udp.yo +55 -66
  121. package/std/os/env.yo +35 -33
  122. package/std/os/signal.yo +15 -25
  123. package/std/path.yo +276 -311
  124. package/std/prelude.yo +6316 -4333
  125. package/std/process/command.yo +87 -103
  126. package/std/process/index.yo +12 -31
  127. package/std/regex/compiler.yo +196 -95
  128. package/std/regex/flags.yo +58 -39
  129. package/std/regex/index.yo +157 -173
  130. package/std/regex/match.yo +20 -31
  131. package/std/regex/node.yo +134 -152
  132. package/std/regex/parser.yo +283 -259
  133. package/std/regex/unicode.yo +172 -202
  134. package/std/regex/vm.yo +155 -171
  135. package/std/string/index.yo +5 -7
  136. package/std/string/rune.yo +45 -55
  137. package/std/string/string.yo +937 -964
  138. package/std/string/string_builder.yo +94 -104
  139. package/std/string/unicode.yo +46 -64
  140. package/std/sync/channel.yo +72 -73
  141. package/std/sync/cond.yo +31 -36
  142. package/std/sync/mutex.yo +30 -32
  143. package/std/sync/once.yo +13 -16
  144. package/std/sync/rwlock.yo +26 -31
  145. package/std/sync/waitgroup.yo +20 -25
  146. package/std/sys/advise.yo +16 -24
  147. package/std/sys/bufio/buf_reader.yo +77 -93
  148. package/std/sys/bufio/buf_writer.yo +52 -65
  149. package/std/sys/clock.yo +4 -9
  150. package/std/sys/constants.yo +77 -61
  151. package/std/sys/copy.yo +4 -10
  152. package/std/sys/dir.yo +26 -43
  153. package/std/sys/dns.yo +41 -61
  154. package/std/sys/errors.yo +95 -103
  155. package/std/sys/events.yo +45 -57
  156. package/std/sys/externs.yo +319 -267
  157. package/std/sys/fallocate.yo +7 -11
  158. package/std/sys/fcntl.yo +14 -22
  159. package/std/sys/file.yo +26 -40
  160. package/std/sys/future.yo +5 -8
  161. package/std/sys/iov.yo +12 -25
  162. package/std/sys/lock.yo +12 -13
  163. package/std/sys/mmap.yo +38 -43
  164. package/std/sys/path.yo +3 -8
  165. package/std/sys/perm.yo +7 -21
  166. package/std/sys/pipe.yo +5 -12
  167. package/std/sys/process.yo +23 -29
  168. package/std/sys/seek.yo +10 -12
  169. package/std/sys/signal.yo +7 -13
  170. package/std/sys/signals.yo +52 -35
  171. package/std/sys/socket.yo +63 -58
  172. package/std/sys/socketpair.yo +3 -6
  173. package/std/sys/sockinfo.yo +11 -20
  174. package/std/sys/statfs.yo +11 -34
  175. package/std/sys/statx.yo +25 -52
  176. package/std/sys/sysinfo.yo +15 -20
  177. package/std/sys/tcp.yo +62 -92
  178. package/std/sys/temp.yo +5 -9
  179. package/std/sys/time.yo +5 -15
  180. package/std/sys/timer.yo +6 -11
  181. package/std/sys/tty.yo +10 -18
  182. package/std/sys/udp.yo +22 -39
  183. package/std/sys/umask.yo +3 -6
  184. package/std/sys/unix.yo +33 -52
  185. package/std/testing/bench.yo +49 -52
  186. package/std/thread.yo +10 -15
  187. package/std/time/datetime.yo +105 -89
  188. package/std/time/duration.yo +43 -56
  189. package/std/time/instant.yo +13 -18
  190. package/std/time/sleep.yo +5 -9
  191. package/std/url/index.yo +184 -209
  192. package/std/worker.yo +6 -10
  193. package/out/types/src/evaluator/calls/module-type.d.ts +0 -11
  194. package/out/types/src/evaluator/types/module.d.ts +0 -19
package/std/sys/signal.yo CHANGED
@@ -1,32 +1,26 @@
1
1
  //! Signal handling functions.
2
2
  //!
3
3
  //! Provides low-level wrappers for signal registration and delivery.
4
-
5
- { __yo_signal_start, __yo_signal_stop, __yo_kill } :: import "./externs.yo";
6
-
7
- SignalHandler :: (fn(data: *(u8)) -> unit);
8
-
4
+ { __yo_signal_start, __yo_signal_stop, __yo_kill } :: import("./externs.yo");
5
+ SignalHandler :: (fn(data : *(u8)) -> unit);
9
6
  // Register a signal handler.
10
7
  // Returns 0 on success, -errno on failure.
11
- on_signal :: (fn(signum: i32, handler: SignalHandler) -> i32)(
8
+ on_signal :: (fn(signum : i32, handler : SignalHandler) -> i32)(
12
9
  __yo_signal_start(signum, unsafe.cast(handler, *(u8)))
13
10
  );
14
-
15
11
  // Remove a signal handler (reset to default).
16
12
  // Returns 0 on success, -errno on failure.
17
- off_signal :: (fn(signum: i32) -> i32)(
13
+ off_signal :: (fn(signum : i32) -> i32)(
18
14
  __yo_signal_stop(signum)
19
15
  );
20
-
21
16
  // Send a signal to a process.
22
17
  // Returns 0 on success, -errno on failure.
23
- kill :: (fn(pid: i32, signum: i32) -> i32)(
18
+ kill :: (fn(pid : i32, signum : i32) -> i32)(
24
19
  __yo_kill(pid, signum)
25
20
  );
26
-
27
- export
21
+ export(
28
22
  SignalHandler,
29
23
  on_signal,
30
24
  off_signal,
31
25
  kill
32
- ;
26
+ );
@@ -2,29 +2,25 @@
2
2
  //!
3
3
  //! Platform-aware signal numbers.
4
4
  //! Uses `process.platform` for values that differ between Linux and macOS.
5
-
6
- { platform, Platform } :: import "../process";
7
-
5
+ { platform, Platform } :: import("../process");
8
6
  // ============================================================================
9
7
  // Signal Constants (POSIX signals)
10
8
  // ============================================================================
11
-
12
- SIGHUP :: i32(1);
13
- SIGINT :: i32(2);
14
- SIGQUIT :: i32(3);
15
- SIGILL :: i32(4);
16
- SIGTRAP :: i32(5);
17
- SIGABRT :: i32(6);
18
- SIGBUS :: i32(7);
19
- SIGFPE :: i32(8);
20
- SIGKILL :: i32(9);
21
- SIGUSR1 :: i32(10);
22
- SIGSEGV :: i32(11);
23
- SIGUSR2 :: i32(12);
24
- SIGPIPE :: i32(13);
25
- SIGALRM :: i32(14);
26
- SIGTERM :: i32(15);
27
-
9
+ SIGHUP :: i32(1);
10
+ SIGINT :: i32(2);
11
+ SIGQUIT :: i32(3);
12
+ SIGILL :: i32(4);
13
+ SIGTRAP :: i32(5);
14
+ SIGABRT :: i32(6);
15
+ SIGBUS :: i32(7);
16
+ SIGFPE :: i32(8);
17
+ SIGKILL :: i32(9);
18
+ SIGUSR1 :: i32(10);
19
+ SIGSEGV :: i32(11);
20
+ SIGUSR2 :: i32(12);
21
+ SIGPIPE :: i32(13);
22
+ SIGALRM :: i32(14);
23
+ SIGTERM :: i32(15);
28
24
  // Platform-dependent signal numbers
29
25
  SIGCHLD :: cond(
30
26
  (platform == Platform.Macos) => i32(20),
@@ -42,19 +38,40 @@ SIGTSTP :: cond(
42
38
  (platform == Platform.Macos) => i32(18),
43
39
  true => i32(20)
44
40
  );
45
-
46
- SIGTTIN :: i32(21);
47
- SIGTTOU :: i32(22);
48
- SIGURG :: i32(23);
49
- SIGXCPU :: i32(24);
50
- SIGXFSZ :: i32(25);
41
+ SIGTTIN :: i32(21);
42
+ SIGTTOU :: i32(22);
43
+ SIGURG :: i32(23);
44
+ SIGXCPU :: i32(24);
45
+ SIGXFSZ :: i32(25);
51
46
  SIGVTALRM :: i32(26);
52
- SIGPROF :: i32(27);
53
- SIGWINCH :: i32(28);
54
-
55
- export
56
- SIGHUP, SIGINT, SIGQUIT, SIGILL, SIGTRAP, SIGABRT, SIGBUS, SIGFPE,
57
- SIGKILL, SIGUSR1, SIGSEGV, SIGUSR2, SIGPIPE, SIGALRM, SIGTERM,
58
- SIGCHLD, SIGCONT, SIGSTOP, SIGTSTP, SIGTTIN, SIGTTOU, SIGURG,
59
- SIGXCPU, SIGXFSZ, SIGVTALRM, SIGPROF, SIGWINCH
60
- ;
47
+ SIGPROF :: i32(27);
48
+ SIGWINCH :: i32(28);
49
+ export(
50
+ SIGHUP,
51
+ SIGINT,
52
+ SIGQUIT,
53
+ SIGILL,
54
+ SIGTRAP,
55
+ SIGABRT,
56
+ SIGBUS,
57
+ SIGFPE,
58
+ SIGKILL,
59
+ SIGUSR1,
60
+ SIGSEGV,
61
+ SIGUSR2,
62
+ SIGPIPE,
63
+ SIGALRM,
64
+ SIGTERM,
65
+ SIGCHLD,
66
+ SIGCONT,
67
+ SIGSTOP,
68
+ SIGTSTP,
69
+ SIGTTIN,
70
+ SIGTTOU,
71
+ SIGURG,
72
+ SIGXCPU,
73
+ SIGXFSZ,
74
+ SIGVTALRM,
75
+ SIGPROF,
76
+ SIGWINCH
77
+ );
package/std/sys/socket.yo CHANGED
@@ -2,55 +2,41 @@
2
2
  //!
3
3
  //! Platform-aware socket constants for TCP, UDP, and Unix domain sockets.
4
4
  //! Uses `process.platform` for values that differ between Linux and macOS.
5
-
6
- { platform, Platform } :: import "../process";
7
- {
8
- __yo_sockaddr_storage_size,
9
- __yo_sockaddr_in_size,
10
- __yo_sockaddr_in6_size,
11
- __yo_sockaddr_un_size
12
- } :: import "./externs.yo";
13
-
5
+ { platform, Platform } :: import("../process");
6
+ { __yo_sockaddr_storage_size, __yo_sockaddr_in_size, __yo_sockaddr_in6_size, __yo_sockaddr_un_size } :: import("./externs.yo");
14
7
  // ============================================================================
15
8
  // Address Families (AF_*)
16
9
  // ============================================================================
17
-
18
10
  AF_UNSPEC :: i32(0);
19
- AF_UNIX :: i32(1);
20
- AF_LOCAL :: i32(1);
21
- AF_INET :: i32(2);
22
- AF_INET6 :: cond(
11
+ AF_UNIX :: i32(1);
12
+ AF_LOCAL :: i32(1);
13
+ AF_INET :: i32(2);
14
+ AF_INET6 :: cond(
23
15
  (platform == Platform.Macos) => i32(30),
24
16
  (platform == Platform.Windows) => i32(23),
25
17
  true => i32(10)
26
18
  );
27
-
28
19
  // ============================================================================
29
20
  // Socket Types (SOCK_*)
30
21
  // ============================================================================
31
-
32
- SOCK_STREAM :: i32(1);
33
- SOCK_DGRAM :: i32(2);
34
- SOCK_RAW :: i32(3);
22
+ SOCK_STREAM :: i32(1);
23
+ SOCK_DGRAM :: i32(2);
24
+ SOCK_RAW :: i32(3);
35
25
  SOCK_SEQPACKET :: i32(5);
36
-
37
26
  // ============================================================================
38
27
  // Socket Option Levels
39
28
  // ============================================================================
40
-
41
29
  SOL_SOCKET :: cond(
42
30
  ((platform == Platform.Macos) || (platform == Platform.Windows)) => i32(0xFFFF),
43
31
  true => i32(1)
44
32
  );
45
- IPPROTO_TCP :: i32(6);
46
- IPPROTO_UDP :: i32(17);
47
- IPPROTO_IP :: i32(0);
33
+ IPPROTO_TCP :: i32(6);
34
+ IPPROTO_UDP :: i32(17);
35
+ IPPROTO_IP :: i32(0);
48
36
  IPPROTO_IPV6 :: i32(41);
49
-
50
37
  // ============================================================================
51
38
  // Socket Options (SO_*)
52
39
  // ============================================================================
53
-
54
40
  SO_REUSEADDR :: cond(
55
41
  ((platform == Platform.Macos) || (platform == Platform.Windows)) => i32(0x0004),
56
42
  true => i32(2)
@@ -96,13 +82,11 @@ SO_REUSEPORT :: cond(
96
82
  (platform == Platform.Windows) => i32(0),
97
83
  true => i32(15)
98
84
  );
99
-
100
85
  // ============================================================================
101
86
  // TCP Options (TCP_*)
102
87
  // ============================================================================
103
-
104
- TCP_NODELAY :: i32(1);
105
- TCP_KEEPIDLE :: cond(
88
+ TCP_NODELAY :: i32(1);
89
+ TCP_KEEPIDLE :: cond(
106
90
  (platform == Platform.Macos) => i32(0x10),
107
91
  (platform == Platform.Windows) => i32(3),
108
92
  true => i32(4)
@@ -117,47 +101,36 @@ TCP_KEEPCNT :: cond(
117
101
  (platform == Platform.Windows) => i32(16),
118
102
  true => i32(6)
119
103
  );
120
-
121
104
  // ============================================================================
122
105
  // shutdown() how parameter
123
106
  // ============================================================================
124
-
125
- SHUT_RD :: i32(0);
126
- SHUT_WR :: i32(1);
107
+ SHUT_RD :: i32(0);
108
+ SHUT_WR :: i32(1);
127
109
  SHUT_RDWR :: i32(2);
128
-
129
110
  // ============================================================================
130
111
  // Special IP Addresses
131
112
  // ============================================================================
132
-
133
- INADDR_ANY :: u32(0x00000000);
134
- INADDR_LOOPBACK :: u32(0x7F000001);
113
+ INADDR_ANY :: u32(0x00000000);
114
+ INADDR_LOOPBACK :: u32(0x7F000001);
135
115
  INADDR_BROADCAST :: u32(0xFFFFFFFF);
136
-
137
116
  // ============================================================================
138
117
  // Sockaddr helpers
139
118
  // ============================================================================
140
-
141
119
  sockaddr_storage_size :: (fn() -> usize)(
142
120
  __yo_sockaddr_storage_size()
143
121
  );
144
-
145
122
  sockaddr_in_size :: (fn() -> usize)(
146
123
  __yo_sockaddr_in_size()
147
124
  );
148
-
149
125
  sockaddr_in6_size :: (fn() -> usize)(
150
126
  __yo_sockaddr_in6_size()
151
127
  );
152
-
153
128
  sockaddr_un_size :: (fn() -> usize)(
154
129
  __yo_sockaddr_un_size()
155
130
  );
156
-
157
131
  // ============================================================================
158
132
  // getnameinfo() flags (NI_*)
159
133
  // ============================================================================
160
-
161
134
  NI_NUMERICHOST :: cond(
162
135
  ((platform == Platform.Macos) || (platform == Platform.Windows)) => i32(2),
163
136
  true => i32(1)
@@ -175,17 +148,49 @@ NI_NAMEREQD :: cond(
175
148
  true => i32(8)
176
149
  );
177
150
  NI_DGRAM :: i32(16);
178
-
179
- export
180
- AF_UNSPEC, AF_UNIX, AF_LOCAL, AF_INET, AF_INET6,
181
- SOCK_STREAM, SOCK_DGRAM, SOCK_RAW, SOCK_SEQPACKET,
182
- SOL_SOCKET, IPPROTO_TCP, IPPROTO_UDP, IPPROTO_IP, IPPROTO_IPV6,
183
- SO_REUSEADDR, SO_REUSEPORT, SO_KEEPALIVE, SO_BROADCAST,
184
- SO_RCVBUF, SO_SNDBUF, SO_RCVTIMEO, SO_SNDTIMEO, SO_ERROR, SO_TYPE,
151
+ export(
152
+ AF_UNSPEC,
153
+ AF_UNIX,
154
+ AF_LOCAL,
155
+ AF_INET,
156
+ AF_INET6,
157
+ SOCK_STREAM,
158
+ SOCK_DGRAM,
159
+ SOCK_RAW,
160
+ SOCK_SEQPACKET,
161
+ SOL_SOCKET,
162
+ IPPROTO_TCP,
163
+ IPPROTO_UDP,
164
+ IPPROTO_IP,
165
+ IPPROTO_IPV6,
166
+ SO_REUSEADDR,
167
+ SO_REUSEPORT,
168
+ SO_KEEPALIVE,
169
+ SO_BROADCAST,
170
+ SO_RCVBUF,
171
+ SO_SNDBUF,
172
+ SO_RCVTIMEO,
173
+ SO_SNDTIMEO,
174
+ SO_ERROR,
175
+ SO_TYPE,
185
176
  SO_LINGER,
186
- TCP_NODELAY, TCP_KEEPIDLE, TCP_KEEPINTVL, TCP_KEEPCNT,
187
- SHUT_RD, SHUT_WR, SHUT_RDWR,
188
- INADDR_ANY, INADDR_LOOPBACK, INADDR_BROADCAST,
189
- sockaddr_storage_size, sockaddr_in_size, sockaddr_in6_size, sockaddr_un_size,
190
- NI_NUMERICHOST, NI_NUMERICSERV, NI_NOFQDN, NI_NAMEREQD, NI_DGRAM
191
- ;
177
+ TCP_NODELAY,
178
+ TCP_KEEPIDLE,
179
+ TCP_KEEPINTVL,
180
+ TCP_KEEPCNT,
181
+ SHUT_RD,
182
+ SHUT_WR,
183
+ SHUT_RDWR,
184
+ INADDR_ANY,
185
+ INADDR_LOOPBACK,
186
+ INADDR_BROADCAST,
187
+ sockaddr_storage_size,
188
+ sockaddr_in_size,
189
+ sockaddr_in6_size,
190
+ sockaddr_un_size,
191
+ NI_NUMERICHOST,
192
+ NI_NUMERICSERV,
193
+ NI_NOFQDN,
194
+ NI_NAMEREQD,
195
+ NI_DGRAM
196
+ );
@@ -2,13 +2,10 @@
2
2
  //!
3
3
  //! Synchronous wrapper for `socketpair`-like behavior.
4
4
  //! Returns 0 on success, negative error on failure.
5
-
6
- { __yo_sync_socketpair } :: import "./externs.yo";
7
-
5
+ { __yo_sync_socketpair } :: import("./externs.yo");
8
6
  // Create a pair of connected sockets.
9
7
  // Writes two socket fds into `sv` (sv[0], sv[1]).
10
- socketpair :: (fn(domain: i32, sock_type: i32, protocol: i32, sv: *(i32)) -> i32)(
8
+ socketpair :: (fn(domain : i32, sock_type : i32, protocol : i32, sv : *(i32)) -> i32)(
11
9
  __yo_sync_socketpair(domain, sock_type, protocol, sv)
12
10
  );
13
-
14
- export socketpair;
11
+ export(socketpair);
@@ -2,38 +2,29 @@
2
2
  //!
3
3
  //! Synchronous wrappers for socket metadata operations.
4
4
  //! Returns 0 on success, -errno (or negative platform socket error) on failure.
5
-
6
- {
7
- __yo_sync_getsockname,
8
- __yo_sync_getpeername,
9
- __yo_sync_getsockopt,
10
- __yo_sync_setsockopt
11
- } :: import "./externs.yo";
12
-
5
+ { __yo_sync_getsockname, __yo_sync_getpeername, __yo_sync_getsockopt, __yo_sync_setsockopt } :: import("./externs.yo");
13
6
  // Get local address of a socket.
14
7
  // Writes the address into `addr` buffer and updates `addrlen` with actual size.
15
- getsockname :: (fn(sockfd: i32, addr: *(u8), addrlen: *(u32)) -> i32)(
8
+ getsockname :: (fn(sockfd : i32, addr : *(u8), addrlen : *(u32)) -> i32)(
16
9
  __yo_sync_getsockname(sockfd, addr, addrlen)
17
10
  );
18
-
19
11
  // Get remote peer address of a connected socket.
20
12
  // Writes the address into `addr` buffer and updates `addrlen` with actual size.
21
- getpeername :: (fn(sockfd: i32, addr: *(u8), addrlen: *(u32)) -> i32)(
13
+ getpeername :: (fn(sockfd : i32, addr : *(u8), addrlen : *(u32)) -> i32)(
22
14
  __yo_sync_getpeername(sockfd, addr, addrlen)
23
15
  );
24
-
25
16
  // Get socket option value.
26
17
  // `optlen` should be initialized with input buffer size and is updated on return.
27
- getsockopt :: (fn(sockfd: i32, level: i32, optname: i32, optval: *(u8), optlen: *(u32)) -> i32)(
18
+ getsockopt :: (fn(sockfd : i32, level : i32, optname : i32, optval : *(u8), optlen : *(u32)) -> i32)(
28
19
  __yo_sync_getsockopt(sockfd, level, optname, optval, optlen)
29
20
  );
30
-
31
21
  // Set socket option value.
32
- setsockopt :: (fn(sockfd: i32, level: i32, optname: i32, optval: *(u8), optlen: u32) -> i32)(
22
+ setsockopt :: (fn(sockfd : i32, level : i32, optname : i32, optval : *(u8), optlen : u32) -> i32)(
33
23
  __yo_sync_setsockopt(sockfd, level, optname, optval, optlen)
34
24
  );
35
-
36
- export
37
- getsockname, getpeername,
38
- getsockopt, setsockopt
39
- ;
25
+ export(
26
+ getsockname,
27
+ getpeername,
28
+ getsockopt,
29
+ setsockopt
30
+ );
package/std/sys/statfs.yo CHANGED
@@ -16,75 +16,52 @@
16
16
  // assert(ret == i32(0));
17
17
  // block_size := statfs.statfs_bsize(buf);
18
18
  // free(.Some(*(void)(buf)));
19
-
20
- {
21
- __yo_sync_statfs,
22
- __yo_statfs_buf_size,
23
- __yo_statfs_type,
24
- __yo_statfs_bsize,
25
- __yo_statfs_blocks,
26
- __yo_statfs_bfree,
27
- __yo_statfs_bavail,
28
- __yo_statfs_files,
29
- __yo_statfs_ffree
30
- } :: import "./externs.yo";
31
-
19
+ { __yo_sync_statfs, __yo_statfs_buf_size, __yo_statfs_type, __yo_statfs_bsize, __yo_statfs_blocks, __yo_statfs_bfree, __yo_statfs_bavail, __yo_statfs_files, __yo_statfs_ffree } :: import("./externs.yo");
32
20
  // ============================================================================
33
21
  // statfs — Filesystem statistics (sync)
34
22
  // ============================================================================
35
-
36
23
  // Get filesystem statistics for the given path.
37
24
  // Writes result to `buf` (use statfs_buf_size() to allocate).
38
25
  // Returns 0 on success, -errno on failure.
39
- statfs :: (fn(path: *(u8), buf: *(u8)) -> i32)(
26
+ statfs :: (fn(path : *(u8), buf : *(u8)) -> i32)(
40
27
  __yo_sync_statfs(path, buf)
41
28
  );
42
-
43
29
  // ============================================================================
44
30
  // Statfs buffer helpers
45
31
  // ============================================================================
46
-
47
32
  // Get required buffer size for statfs.
48
33
  statfs_buf_size :: (fn() -> usize)(
49
34
  __yo_statfs_buf_size()
50
35
  );
51
-
52
36
  // Filesystem type (0 on platforms without type).
53
- statfs_type :: (fn(buf: *(u8)) -> u64)(
37
+ statfs_type :: (fn(buf : *(u8)) -> u64)(
54
38
  __yo_statfs_type(buf)
55
39
  );
56
-
57
40
  // Fundamental filesystem block size.
58
- statfs_bsize :: (fn(buf: *(u8)) -> u64)(
41
+ statfs_bsize :: (fn(buf : *(u8)) -> u64)(
59
42
  __yo_statfs_bsize(buf)
60
43
  );
61
-
62
44
  // Total data blocks in filesystem.
63
- statfs_blocks :: (fn(buf: *(u8)) -> u64)(
45
+ statfs_blocks :: (fn(buf : *(u8)) -> u64)(
64
46
  __yo_statfs_blocks(buf)
65
47
  );
66
-
67
48
  // Free blocks in filesystem.
68
- statfs_bfree :: (fn(buf: *(u8)) -> u64)(
49
+ statfs_bfree :: (fn(buf : *(u8)) -> u64)(
69
50
  __yo_statfs_bfree(buf)
70
51
  );
71
-
72
52
  // Free blocks available to unprivileged users.
73
- statfs_bavail :: (fn(buf: *(u8)) -> u64)(
53
+ statfs_bavail :: (fn(buf : *(u8)) -> u64)(
74
54
  __yo_statfs_bavail(buf)
75
55
  );
76
-
77
56
  // Total file nodes (inodes).
78
- statfs_files :: (fn(buf: *(u8)) -> u64)(
57
+ statfs_files :: (fn(buf : *(u8)) -> u64)(
79
58
  __yo_statfs_files(buf)
80
59
  );
81
-
82
60
  // Free file nodes (inodes).
83
- statfs_ffree :: (fn(buf: *(u8)) -> u64)(
61
+ statfs_ffree :: (fn(buf : *(u8)) -> u64)(
84
62
  __yo_statfs_ffree(buf)
85
63
  );
86
-
87
- export
64
+ export(
88
65
  statfs,
89
66
  statfs_buf_size,
90
67
  statfs_type,
@@ -94,4 +71,4 @@ export
94
71
  statfs_bavail,
95
72
  statfs_files,
96
73
  statfs_ffree
97
- ;
74
+ );
package/std/sys/statx.yo CHANGED
@@ -2,94 +2,67 @@
2
2
  //!
3
3
  //! Object wrapper around the C statx buffer, providing
4
4
  //! accessor methods for file metadata.
5
-
6
- {
7
- S_IFMT, S_IFREG, S_IFDIR, S_IFLNK
8
- } :: import "./constants.yo";
9
-
10
- {
11
- __yo_statx_mode, __yo_statx_size, __yo_statx_uid, __yo_statx_gid,
12
- __yo_statx_ino, __yo_statx_nlink,
13
- __yo_statx_mtime_sec, __yo_statx_mtime_nsec,
14
- __yo_statx_atime_sec, __yo_statx_atime_nsec,
15
- __yo_statx_ctime_sec, __yo_statx_ctime_nsec
16
- } :: import "./externs.yo";
17
-
5
+ { S_IFMT, S_IFREG, S_IFDIR, S_IFLNK } :: import("./constants.yo");
6
+ { __yo_statx_mode, __yo_statx_size, __yo_statx_uid, __yo_statx_gid, __yo_statx_ino, __yo_statx_nlink, __yo_statx_mtime_sec, __yo_statx_mtime_nsec, __yo_statx_atime_sec, __yo_statx_atime_nsec, __yo_statx_ctime_sec, __yo_statx_ctime_nsec } :: import("./externs.yo");
18
7
  // ============================================================================
19
8
  // Statx - File status from async stat operations
20
9
  // ============================================================================
21
-
22
10
  Statx :: struct(
23
- _buf_ptr: *(u8),
24
- _buf_size: usize
11
+ _buf_ptr : *(u8),
12
+ _buf_size : usize
25
13
  );
26
-
27
- impl(Statx,
28
- is_file : (fn(self: Self) -> bool)({
14
+ impl(
15
+ Statx,
16
+ is_file : (fn(self : Self) -> bool)({
29
17
  mode := __yo_statx_mode(self._buf_ptr);
30
18
  file_type := (mode & S_IFMT);
31
- return (file_type == S_IFREG);
19
+ return(file_type == S_IFREG);
32
20
  }),
33
-
34
- is_directory : (fn(self: Self) -> bool)({
21
+ is_directory : (fn(self : Self) -> bool)({
35
22
  mode := __yo_statx_mode(self._buf_ptr);
36
23
  file_type := (mode & S_IFMT);
37
- return (file_type == S_IFDIR);
24
+ return(file_type == S_IFDIR);
38
25
  }),
39
-
40
- is_symlink : (fn(self: Self) -> bool)({
26
+ is_symlink : (fn(self : Self) -> bool)({
41
27
  mode := __yo_statx_mode(self._buf_ptr);
42
28
  file_type := (mode & S_IFMT);
43
- return (file_type == S_IFLNK);
29
+ return(file_type == S_IFLNK);
44
30
  }),
45
-
46
- size : (fn(self: Self) -> i64)(
31
+ size : (fn(self : Self) -> i64)(
47
32
  __yo_statx_size(self._buf_ptr)
48
33
  ),
49
-
50
- mode : (fn(self: Self) -> u32)(
34
+ mode : (fn(self : Self) -> u32)(
51
35
  __yo_statx_mode(self._buf_ptr)
52
36
  ),
53
-
54
- uid : (fn(self: Self) -> u32)(
37
+ uid : (fn(self : Self) -> u32)(
55
38
  __yo_statx_uid(self._buf_ptr)
56
39
  ),
57
-
58
- gid : (fn(self: Self) -> u32)(
40
+ gid : (fn(self : Self) -> u32)(
59
41
  __yo_statx_gid(self._buf_ptr)
60
42
  ),
61
-
62
- ino : (fn(self: Self) -> u64)(
43
+ ino : (fn(self : Self) -> u64)(
63
44
  __yo_statx_ino(self._buf_ptr)
64
45
  ),
65
-
66
- nlink : (fn(self: Self) -> u64)(
46
+ nlink : (fn(self : Self) -> u64)(
67
47
  __yo_statx_nlink(self._buf_ptr)
68
48
  ),
69
-
70
- mtime_sec : (fn(self: Self) -> i64)(
49
+ mtime_sec : (fn(self : Self) -> i64)(
71
50
  __yo_statx_mtime_sec(self._buf_ptr)
72
51
  ),
73
-
74
- mtime_nsec : (fn(self: Self) -> u32)(
52
+ mtime_nsec : (fn(self : Self) -> u32)(
75
53
  __yo_statx_mtime_nsec(self._buf_ptr)
76
54
  ),
77
-
78
- atime_sec : (fn(self: Self) -> i64)(
55
+ atime_sec : (fn(self : Self) -> i64)(
79
56
  __yo_statx_atime_sec(self._buf_ptr)
80
57
  ),
81
-
82
- atime_nsec : (fn(self: Self) -> u32)(
58
+ atime_nsec : (fn(self : Self) -> u32)(
83
59
  __yo_statx_atime_nsec(self._buf_ptr)
84
60
  ),
85
-
86
- ctime_sec : (fn(self: Self) -> i64)(
61
+ ctime_sec : (fn(self : Self) -> i64)(
87
62
  __yo_statx_ctime_sec(self._buf_ptr)
88
63
  ),
89
-
90
- ctime_nsec : (fn(self: Self) -> u32)(
64
+ ctime_nsec : (fn(self : Self) -> u32)(
91
65
  __yo_statx_ctime_nsec(self._buf_ptr)
92
66
  )
93
67
  );
94
-
95
- export Statx;
68
+ export(Statx);
@@ -2,13 +2,8 @@
2
2
  //!
3
3
  //! Synchronous wrappers for `uname`/`gethostname`.
4
4
  //! Returns 0 on success, -errno / negative platform error on failure.
5
-
6
- { platform, Platform } :: import "../process";
7
- {
8
- __yo_sync_uname,
9
- __yo_sync_gethostname
10
- } :: import "./externs.yo";
11
-
5
+ { platform, Platform } :: import("../process");
6
+ { __yo_sync_uname, __yo_sync_gethostname } :: import("./externs.yo");
12
7
  // uname() layout constants.
13
8
  // Linux uses 65-byte fields (6 fields total including domainname).
14
9
  // macOS uses 256-byte fields (5 fields).
@@ -18,30 +13,30 @@ UTSNAME_FIELD_SIZE :: cond(
18
13
  (platform == Platform.Windows) => usize(256),
19
14
  true => usize(65)
20
15
  );
21
-
22
16
  UTSNAME_SIZE :: cond(
23
17
  (platform == Platform.Macos) => usize(1280),
24
18
  (platform == Platform.Windows) => usize(1280),
25
19
  true => usize(390)
26
20
  );
27
-
28
21
  UTSNAME_SYSNAME :: usize(0);
29
22
  UTSNAME_NODENAME :: UTSNAME_FIELD_SIZE;
30
23
  UTSNAME_RELEASE :: (UTSNAME_FIELD_SIZE * usize(2));
31
24
  UTSNAME_VERSION :: (UTSNAME_FIELD_SIZE * usize(3));
32
25
  UTSNAME_MACHINE :: (UTSNAME_FIELD_SIZE * usize(4));
33
-
34
- uname :: (fn(buf: *(u8)) -> i32)(
26
+ uname :: (fn(buf : *(u8)) -> i32)(
35
27
  __yo_sync_uname(buf)
36
28
  );
37
-
38
- gethostname :: (fn(name: *(u8), len: usize) -> i32)(
29
+ gethostname :: (fn(name : *(u8), len : usize) -> i32)(
39
30
  __yo_sync_gethostname(name, len)
40
31
  );
41
-
42
- export
43
- uname, gethostname,
44
- UTSNAME_SIZE, UTSNAME_FIELD_SIZE,
45
- UTSNAME_SYSNAME, UTSNAME_NODENAME,
46
- UTSNAME_RELEASE, UTSNAME_VERSION, UTSNAME_MACHINE
47
- ;
32
+ export(
33
+ uname,
34
+ gethostname,
35
+ UTSNAME_SIZE,
36
+ UTSNAME_FIELD_SIZE,
37
+ UTSNAME_SYSNAME,
38
+ UTSNAME_NODENAME,
39
+ UTSNAME_RELEASE,
40
+ UTSNAME_VERSION,
41
+ UTSNAME_MACHINE
42
+ );