@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.
- package/.github/skills/yo-async-effects/SKILL.md +4 -4
- package/.github/skills/yo-async-effects/async-effects-recipes.md +40 -40
- package/.github/skills/yo-core-patterns/SKILL.md +1 -1
- package/.github/skills/yo-core-patterns/core-patterns-cheatsheet.md +30 -26
- package/.github/skills/yo-project-workflow/SKILL.md +6 -3
- package/.github/skills/yo-project-workflow/workflow-cheatsheet.md +34 -11
- package/.github/skills/yo-syntax/SKILL.md +7 -6
- package/.github/skills/yo-syntax/syntax-cheatsheet.md +78 -60
- package/.github/skills/yo-wasm-integration/wasm-integration-cheatsheet.md +3 -3
- package/README.md +10 -8
- package/out/cjs/index.cjs +583 -567
- package/out/cjs/yo-cli.cjs +664 -632
- package/out/cjs/yo-lsp.cjs +510 -485
- package/out/esm/index.mjs +538 -522
- package/out/types/src/codegen/codegen-c.d.ts +2 -2
- package/out/types/src/codegen/functions/collection.d.ts +2 -2
- package/out/types/src/codegen/functions/context.d.ts +3 -2
- package/out/types/src/codegen/types/collection.d.ts +2 -2
- package/out/types/src/codegen/utils/index.d.ts +3 -1
- package/out/types/src/doc/builder.d.ts +2 -2
- package/out/types/src/evaluator/calls/closure-type.d.ts +2 -2
- package/out/types/src/evaluator/calls/record-type.d.ts +11 -0
- package/out/types/src/evaluator/context.d.ts +8 -9
- package/out/types/src/evaluator/index.d.ts +3 -3
- package/out/types/src/evaluator/types/record.d.ts +14 -0
- package/out/types/src/evaluator/types/validation.d.ts +2 -2
- package/out/types/src/evaluator/values/anonymous-module.d.ts +5 -5
- package/out/types/src/evaluator/values/impl.d.ts +1 -1
- package/out/types/src/expr.d.ts +1 -4
- package/out/types/src/formatter.d.ts +11 -0
- package/out/types/src/function-value.d.ts +1 -1
- package/out/types/src/lsp/document-manager.d.ts +1 -1
- package/out/types/src/lsp/formatting.d.ts +2 -0
- package/out/types/src/module-manager.d.ts +3 -3
- package/out/types/src/tests/formatter.test.d.ts +1 -0
- package/out/types/src/types/creators.d.ts +3 -4
- package/out/types/src/types/definitions.d.ts +8 -19
- package/out/types/src/types/guards.d.ts +3 -3
- package/out/types/src/types/tags.d.ts +0 -1
- package/out/types/src/types/utils.d.ts +1 -1
- package/out/types/src/value-tag.d.ts +0 -1
- package/out/types/src/value.d.ts +6 -13
- package/out/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/std/alg/hash.yo +13 -21
- package/std/allocator.yo +25 -40
- package/std/async.yo +3 -7
- package/std/build.yo +105 -151
- package/std/cli/arg_parser.yo +184 -169
- package/std/collections/array_list.yo +350 -314
- package/std/collections/btree_map.yo +142 -131
- package/std/collections/deque.yo +132 -128
- package/std/collections/hash_map.yo +542 -566
- package/std/collections/hash_set.yo +623 -687
- package/std/collections/linked_list.yo +275 -293
- package/std/collections/ordered_map.yo +113 -85
- package/std/collections/priority_queue.yo +73 -73
- package/std/crypto/md5.yo +191 -95
- package/std/crypto/random.yo +56 -64
- package/std/crypto/sha256.yo +151 -107
- package/std/encoding/base64.yo +87 -81
- package/std/encoding/hex.yo +43 -50
- package/std/encoding/html.yo +56 -81
- package/std/encoding/html_char_utils.yo +7 -13
- package/std/encoding/html_entities.yo +2248 -2253
- package/std/encoding/json.yo +316 -224
- package/std/encoding/punycode.yo +86 -116
- package/std/encoding/toml.yo +67 -66
- package/std/encoding/utf16.yo +37 -44
- package/std/env.yo +62 -91
- package/std/error.yo +12 -20
- package/std/fmt/display.yo +5 -9
- package/std/fmt/index.yo +8 -14
- package/std/fmt/to_string.yo +330 -315
- package/std/fmt/writer.yo +58 -87
- package/std/fs/dir.yo +83 -102
- package/std/fs/file.yo +147 -180
- package/std/fs/metadata.yo +45 -78
- package/std/fs/temp.yo +55 -65
- package/std/fs/types.yo +27 -40
- package/std/fs/walker.yo +53 -68
- package/std/gc.yo +5 -8
- package/std/glob.yo +30 -43
- package/std/http/client.yo +107 -120
- package/std/http/http.yo +106 -96
- package/std/http/index.yo +4 -6
- package/std/imm/list.yo +88 -93
- package/std/imm/map.yo +528 -464
- package/std/imm/set.yo +52 -57
- package/std/imm/sorted_map.yo +340 -286
- package/std/imm/sorted_set.yo +57 -63
- package/std/imm/string.yo +404 -345
- package/std/imm/vec.yo +173 -181
- package/std/io/reader.yo +3 -6
- package/std/io/writer.yo +4 -8
- package/std/libc/assert.yo +5 -9
- package/std/libc/ctype.yo +32 -22
- package/std/libc/dirent.yo +26 -25
- package/std/libc/errno.yo +164 -90
- package/std/libc/fcntl.yo +52 -45
- package/std/libc/float.yo +66 -44
- package/std/libc/limits.yo +42 -33
- package/std/libc/math.yo +53 -82
- package/std/libc/signal.yo +72 -47
- package/std/libc/stdatomic.yo +217 -188
- package/std/libc/stdint.yo +5 -29
- package/std/libc/stdio.yo +5 -29
- package/std/libc/stdlib.yo +32 -39
- package/std/libc/string.yo +5 -23
- package/std/libc/sys/stat.yo +58 -56
- package/std/libc/time.yo +5 -19
- package/std/libc/unistd.yo +5 -20
- package/std/libc/wctype.yo +6 -9
- package/std/libc/windows.yo +26 -30
- package/std/log.yo +41 -55
- package/std/net/addr.yo +102 -97
- package/std/net/dns.yo +27 -28
- package/std/net/errors.yo +50 -49
- package/std/net/tcp.yo +113 -124
- package/std/net/udp.yo +55 -66
- package/std/os/env.yo +35 -33
- package/std/os/signal.yo +15 -25
- package/std/path.yo +276 -311
- package/std/prelude.yo +6316 -4333
- package/std/process/command.yo +87 -103
- package/std/process/index.yo +12 -31
- package/std/regex/compiler.yo +196 -95
- package/std/regex/flags.yo +58 -39
- package/std/regex/index.yo +157 -173
- package/std/regex/match.yo +20 -31
- package/std/regex/node.yo +134 -152
- package/std/regex/parser.yo +283 -259
- package/std/regex/unicode.yo +172 -202
- package/std/regex/vm.yo +155 -171
- package/std/string/index.yo +5 -7
- package/std/string/rune.yo +45 -55
- package/std/string/string.yo +937 -964
- package/std/string/string_builder.yo +94 -104
- package/std/string/unicode.yo +46 -64
- package/std/sync/channel.yo +72 -73
- package/std/sync/cond.yo +31 -36
- package/std/sync/mutex.yo +30 -32
- package/std/sync/once.yo +13 -16
- package/std/sync/rwlock.yo +26 -31
- package/std/sync/waitgroup.yo +20 -25
- package/std/sys/advise.yo +16 -24
- package/std/sys/bufio/buf_reader.yo +77 -93
- package/std/sys/bufio/buf_writer.yo +52 -65
- package/std/sys/clock.yo +4 -9
- package/std/sys/constants.yo +77 -61
- package/std/sys/copy.yo +4 -10
- package/std/sys/dir.yo +26 -43
- package/std/sys/dns.yo +41 -61
- package/std/sys/errors.yo +95 -103
- package/std/sys/events.yo +45 -57
- package/std/sys/externs.yo +319 -267
- package/std/sys/fallocate.yo +7 -11
- package/std/sys/fcntl.yo +14 -22
- package/std/sys/file.yo +26 -40
- package/std/sys/future.yo +5 -8
- package/std/sys/iov.yo +12 -25
- package/std/sys/lock.yo +12 -13
- package/std/sys/mmap.yo +38 -43
- package/std/sys/path.yo +3 -8
- package/std/sys/perm.yo +7 -21
- package/std/sys/pipe.yo +5 -12
- package/std/sys/process.yo +23 -29
- package/std/sys/seek.yo +10 -12
- package/std/sys/signal.yo +7 -13
- package/std/sys/signals.yo +52 -35
- package/std/sys/socket.yo +63 -58
- package/std/sys/socketpair.yo +3 -6
- package/std/sys/sockinfo.yo +11 -20
- package/std/sys/statfs.yo +11 -34
- package/std/sys/statx.yo +25 -52
- package/std/sys/sysinfo.yo +15 -20
- package/std/sys/tcp.yo +62 -92
- package/std/sys/temp.yo +5 -9
- package/std/sys/time.yo +5 -15
- package/std/sys/timer.yo +6 -11
- package/std/sys/tty.yo +10 -18
- package/std/sys/udp.yo +22 -39
- package/std/sys/umask.yo +3 -6
- package/std/sys/unix.yo +33 -52
- package/std/testing/bench.yo +49 -52
- package/std/thread.yo +10 -15
- package/std/time/datetime.yo +105 -89
- package/std/time/duration.yo +43 -56
- package/std/time/instant.yo +13 -18
- package/std/time/sleep.yo +5 -9
- package/std/url/index.yo +184 -209
- package/std/worker.yo +6 -10
- package/out/types/src/evaluator/calls/module-type.d.ts +0 -11
- package/out/types/src/evaluator/types/module.d.ts +0 -19
package/package.json
CHANGED
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
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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);
|