feat(stdlib): finish Crypto (CSPRNG + base64) and add Uuid.* library (#19 #16)
All checks were successful
docs / build-and-deploy (push) Successful in 2s
All checks were successful
docs / build-and-deploy (push) Successful in 2s
Crypto (#19): add the OS cryptographically-secure random surface (random_bytes/random_hex/random_u32, reading /dev/urandom) and a standard base64 encoder, completing the library alongside the existing SHA-256/ HMAC-SHA256/verify_hmac/hex/ct_equal. All pure integer IR, C-free. Uuid (#16): a new namespace for stable, collision-free IDs — v4 (random) and v7 (time-ordered) generation, plus parse/is_valid/to_text/equals/nil. UUIDs are canonical lowercase 36-char strings; v4 and v7's random tail draw from the crypto CSPRNG, so both carry the documented determinism caveat (mint at the edges, never inside lockstep simulation). Reuses the crypto prelude's fn_secure_bytes / fn_hex_encode. - examples/library/{crypto,uuid}.ludic: known-answer vectors (SHA-256, HMAC, base64 per RFC 4231/4648) and structural invariants (uuid version/variant bits, parse/equals), wired into `x test` (now 51 passed). - docs: per-symbol pages for every new method + a new Uuid section; inventory and impl-vs-docs coverage check pass. - seed regenerated; `x bootstrap-cfree` fixpoint holds. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
a422ef4375
commit
2ddf830f0b
26 changed files with 12185 additions and 10720 deletions
28
docs/language/uuid/uuid-is_valid.md
Normal file
28
docs/language/uuid/uuid-is_valid.md
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
---
|
||||
id: uuid-is_valid
|
||||
name: Uuid.is_valid
|
||||
category: uuid
|
||||
kind: namespace-method
|
||||
tokens: Uuid.is_valid
|
||||
sig: Uuid.is_valid(s) -> bool
|
||||
tip: Is s a well-formed UUID string?
|
||||
order: 6
|
||||
ns: Uuid
|
||||
member: is_valid
|
||||
---
|
||||
|
||||
Reports whether <code>s</code> is a well-formed UUID: exactly 36 characters, hyphens at positions 8, 13, 18 and 23, and hexadecimal digits (either case) everywhere else. This is the guard to run on any UUID that came from outside your program — a save file, a network message, a mod, a command-line flag — before you trust it as an identity.
|
||||
|
||||
It checks *shape*, not version: both v4 and v7 IDs (and any other conforming UUID) pass. To also fold a malformed value into a safe default in one step, use <a href="uuid-parse"><code>Uuid.parse</code></a> instead.
|
||||
|
||||
Parameters:
|
||||
- `s` — the string to check
|
||||
|
||||
```ludic
|
||||
program Valid {
|
||||
entry {
|
||||
if Uuid.is_valid("550e8400-e29b-41d4-a716-446655440000") { print(1) }
|
||||
if not Uuid.is_valid("not-a-uuid") { print(2) }
|
||||
}
|
||||
}
|
||||
```
|
||||
Loading…
Add table
Add a link
Reference in a new issue