@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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@shd101wyy/yo",
3
3
  "displayName": "Yo",
4
- "version": "0.1.25",
4
+ "version": "0.1.27",
5
5
  "main": "./out/cjs/index.cjs",
6
6
  "module": "./out/esm/index.mjs",
7
7
  "types": "./out/types/src/index.d.ts",
package/std/alg/hash.yo CHANGED
@@ -2,37 +2,29 @@
2
2
  //!
3
3
  //! A fast, non-cryptographic hash function with good distribution.
4
4
  //! Used internally by `HashMap` and `HashSet`.
5
-
6
5
  /// FNV offset basis constant (0xcbf29ce484222325).
7
6
  FNV_OFFSET_BASIS :: u64(14695981039346656037);
8
7
  /// FNV prime constant (0x100000001b3).
9
8
  FNV_PRIME :: u64(1099511628211);
10
-
11
9
  /// Hash a byte sequence using FNV-1a.
12
- fnv1a_hash_bytes :: (fn(bytes: *(u8), length: usize) -> u64)
13
- {
14
- hash := FNV_OFFSET_BASIS;
15
- i := usize(0);
16
- while(i < length, i = (i + usize(1)), {
17
- byte := (bytes &+ i).*;
18
- xor := (hash ^ u64(byte));
19
- hash = (xor * FNV_PRIME);
20
- });
21
- return hash;
22
- }
23
- ;
24
-
10
+ fnv1a_hash_bytes :: (fn(bytes : *(u8), length : usize) -> u64)({
11
+ hash := FNV_OFFSET_BASIS;
12
+ i := usize(0);
13
+ while(i < length, i = (i + usize(1)), {
14
+ byte := (bytes &+ i).*;
15
+ xor := (hash ^ u64(byte));
16
+ hash = (xor * FNV_PRIME);
17
+ });
18
+ return(hash);
19
+ });
25
20
  /// Combine two hash values using `hash * 31 + other`.
26
21
  ///
27
22
  /// The constant 31 is chosen because it is prime, close to a power of 2
28
23
  /// (fast multiplication), and proven effective in practice.
29
- hash_combine :: (fn(hash: u64, other: u64) -> u64)
30
- ((hash * u64(31)) + other)
31
- ;
32
-
33
- export
24
+ hash_combine :: (fn(hash : u64, other : u64) -> u64)((hash * u64(31)) + other);
25
+ export(
34
26
  fnv1a_hash_bytes,
35
27
  hash_combine,
36
28
  FNV_OFFSET_BASIS,
37
29
  FNV_PRIME
38
- ;
30
+ );
package/std/allocator.yo CHANGED
@@ -1,7 +1,5 @@
1
1
  //! Memory allocation abstractions and global allocator interface.
2
-
3
- { SIZE_MAX } :: import "./libc/stdint.yo";
4
-
2
+ { SIZE_MAX } :: import("./libc/stdint.yo");
5
3
  /// Memory allocation error variants.
6
4
  AllocError :: enum(
7
5
  /// Allocator ran out of memory.
@@ -13,93 +11,80 @@ AllocError :: enum(
13
11
  /// Pointer passed to dealloc/realloc is invalid.
14
12
  InvalidPointer
15
13
  );
16
-
17
14
  /// Describes the size and alignment requirements for a memory allocation.
18
15
  Layout :: struct(
19
16
  /// Size in bytes.
20
- size: usize,
17
+ size : usize,
21
18
  /// Alignment in bytes (must be a power of two).
22
- alignment: usize
19
+ alignment : usize
23
20
  );
24
-
25
21
  /// Get the memory layout (size and alignment) of a type at compile time.
26
22
  layout_of ::
27
- (fn(comptime(T): Type) -> comptime(Layout))
23
+ (fn(comptime(T) : Type) -> comptime(Layout))(
28
24
  Layout(
29
- size: sizeof(T),
30
- alignment: alignof(T)
25
+ size : sizeof(T),
26
+ alignment : alignof(T)
31
27
  )
32
- ;
33
-
28
+ );
34
29
  /// Check if allocating `count` elements of type T would overflow `usize`.
35
- size_would_overflow ::
36
- (fn(comptime(T): Type, count: usize) -> bool) {
30
+ size_would_overflow ::
31
+ (fn(comptime(T) : Type, count : usize) -> bool)({
37
32
  type_size :: sizeof(T);
38
33
  cond(
39
34
  (type_size == usize(0)) => false,
40
35
  true => (count > (SIZE_MAX / type_size))
41
36
  )
42
- };
43
-
37
+ });
44
38
  /// User-implementable memory allocator interface.
45
39
  /// Implement this trait to provide custom allocation strategies.
46
40
  CustomAllocator :: trait(
47
41
  /// Allocate memory for `count` items of type T.
48
- alloc : (fn(self : *(Self), comptime(T): Type, count: usize) -> Result(?*(T), AllocError)),
49
-
42
+ alloc : (fn(self : *(Self), comptime(T) : Type, count : usize) -> Result(?*(T), AllocError)),
50
43
  /// Allocate zeroed memory for `count` items of type T.
51
- alloc_zeroed : (fn(self : *(Self), comptime(T): Type, count: usize) -> Result(?*(T), AllocError)),
52
-
44
+ alloc_zeroed : (fn(self : *(Self), comptime(T) : Type, count : usize) -> Result(?*(T), AllocError)),
53
45
  /// Allocate aligned memory for `count` items of type T with the given alignment.
54
- alloc_aligned : (fn(self : *(Self), comptime(T): Type, count: usize, alignment: usize) -> Result(?*(T), AllocError)),
55
-
46
+ alloc_aligned : (fn(self : *(Self), comptime(T) : Type, count : usize, alignment : usize) -> Result(?*(T), AllocError)),
56
47
  /// Reallocate memory to `new_count` items, preserving existing data.
57
48
  realloc : (fn(forall(T : Type), self : *(Self), old_ptr : ?*(T), new_count : usize) -> Result(?*(T), AllocError)),
58
-
59
49
  /// Deallocate memory pointed to by `ptr`.
60
50
  dealloc : (fn(forall(T : Type), self : *(Self), ptr : *(T)) -> Result(unit, AllocError))
61
51
  );
62
-
63
52
  /// Type-erased dynamic allocator wrapping any `CustomAllocator` implementation.
64
53
  Allocator :: Dyn(CustomAllocator);
65
-
66
- extern "Yo",
67
- __yo_malloc :
68
- fn(size: usize) -> ?*(void),
54
+ extern(
55
+ "Yo",
56
+ __yo_malloc :
57
+ fn(size : usize) -> ?*(void),
69
58
  __yo_calloc :
70
- fn(nmemb: usize, size: usize) -> ?*(void),
59
+ fn(nmemb : usize, size : usize) -> ?*(void),
71
60
  __yo_realloc :
72
61
  fn(ptr : ?*(void), size : usize) -> ?*(void),
73
62
  __yo_free :
74
63
  fn(ptr : ?*(void)) -> unit,
75
64
  __yo_aligned_alloc :
76
65
  fn(alignment : usize, size : usize) -> ?*(void)
77
- ;
78
-
66
+ );
79
67
  /// The process-wide global allocator (mimalloc by default, falls back to libc).
80
- GlobalAllocator :: impl {
68
+ GlobalAllocator :: impl({
81
69
  malloc :: __yo_malloc;
82
70
  calloc :: __yo_calloc;
83
71
  realloc :: __yo_realloc;
84
72
  free :: __yo_free;
85
73
  aligned_alloc :: __yo_aligned_alloc;
86
-
87
- export
74
+ export(
88
75
  malloc,
89
76
  calloc,
90
77
  realloc,
91
78
  free,
92
79
  aligned_alloc
93
- ;
94
- };
95
-
96
- export
80
+ );
81
+ });
82
+ export(
97
83
  size_would_overflow,
98
84
  CustomAllocator,
99
85
  Allocator,
100
86
  Layout,
101
87
  layout_of,
102
88
  AllocError,
103
-
104
89
  GlobalAllocator
105
- ;
90
+ );
package/std/async.yo CHANGED
@@ -1,13 +1,9 @@
1
1
  //! Async utilities for cooperative task scheduling.
2
-
3
2
  /// Suspend the current async task, allowing other tasks to run on the event loop.
4
3
  /// Implemented as an immediately-completing async block that forces a suspension point.
5
4
  yield :: (fn(using(io : IO)) -> Impl(Future(unit)))(
6
- io.async(()=> {
7
- return ();
5
+ io.async(() => {
6
+ return(());
8
7
  })
9
8
  );
10
-
11
- export
12
- yield
13
- ;
9
+ export(yield);