From 05c04b209c1b17cd2d20a30f7b8d9af2a289a9f7 Mon Sep 17 00:00:00 2001 From: Brandon Lucas Date: Mon, 16 Feb 2026 23:05:36 -0500 Subject: [PATCH] Clean up repo: gitignore binaries, remove stale docs - Add compiled binaries (grapho, *_test) to .gitignore - Remove grapho binary from tracking (build from source) - Delete obsolete LUX-LIMITATIONS.md - Minor README wording fix Co-Authored-By: Claude Opus 4.5 --- .gitignore | 4 + README.md | 2 +- docs/LUX-LIMITATIONS.md | 218 ---------------------------------------- grapho | Bin 95368 -> 0 bytes 4 files changed, 5 insertions(+), 219 deletions(-) delete mode 100644 docs/LUX-LIMITATIONS.md delete mode 100755 grapho diff --git a/.gitignore b/.gitignore index 4b9a797..d67efc3 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,10 @@ result result-* .direnv/ +# Compiled binaries +grapho +*_test + # Secrets (NEVER commit unencrypted secrets) secrets/*.yaml !secrets/secrets.yaml.example diff --git a/README.md b/README.md index 251ff4f..4cd7157 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Ultimate Notetaking, Sync & Backup System -A NixOS-based system for managing the three types of data in a computer: +A NixOS-based system for managing the three types of data across devices: | Tier | Type | Examples | Sync Model | |------|------|----------|------------| diff --git a/docs/LUX-LIMITATIONS.md b/docs/LUX-LIMITATIONS.md deleted file mode 100644 index 31cbc2f..0000000 --- a/docs/LUX-LIMITATIONS.md +++ /dev/null @@ -1,218 +0,0 @@ -# Lux Language Limitations (grapho CLI) - -This document tracks limitations encountered while developing the grapho CLI in Lux, to help improve the language. - -## Fixed Issues - -### 1. Double Execution Bug (FIXED) -**Severity:** Critical -**Status:** Fixed in Lux c_backend.rs - -When using `let result = run main() with {}` to invoke the main function, the entire program was executing twice. - -**Root Cause:** In `c_backend.rs:3878-3907`, the generated C code was: -1. Executing all `run` expressions (including `run main() with {}`) -2. Then ALSO calling `main_lux()` separately because `has_main` was true - -**Fix:** Added tracking of whether main was already called via a `run` expression, and skip the separate `main_lux()` call if so. - ---- - -## String Handling Issues - -### 2. No Escape Sequences in String Literals -**Severity:** High -**Status:** Confirmed - -Lux does not support backslash escape sequences like `\"`, `\n`, `\t` in string literals. - -```lux -// This FAILS - backslash causes parse error -Console.print("Hello \"World\"") // ERROR: Unexpected character: '\' - -// This FAILS -Console.print("Line1\nLine2") // ERROR: Unexpected character: '\' -``` - -**Impact:** Cannot include quotes in strings, cannot create multi-line strings, cannot output JSON with proper formatting. - -**Workaround:** -- Use shell commands via `Process.exec` to generate quoted output -- Use `String.fromChar('"')` for quotes (but this had issues too) -- For JSON output, use key=value format instead - -### 3. Dollar Sign in Strings Causes Parse Error -**Severity:** Medium -**Status:** Confirmed - -The `$` character in strings triggers the string interpolation lexer, even inside shell command strings. - -```lux -// This FAILS -execQuiet("jq -n --arg x '$foo' ...") // ERROR: Unexpected character: '$' -``` - -**Impact:** Cannot use shell variable syntax or jq arguments in command strings. - -**Workaround:** Avoid `$` in strings, or construct commands differently. - -### 4. String.fromChar Returns Int, Not String -**Severity:** Medium -**Status:** Bug - -`String.fromChar('"')` appears to return an Int instead of a String, causing C compilation errors. - -```lux -let q = String.fromChar('"') // Compiles but C code is wrong -Console.print(q + "hello") // C error: int + string -``` - -**Impact:** Cannot use character literals to build strings. - -**Workaround:** Use `execQuiet("printf '%s' '\"'")` to get a quote character. - ---- - -## Type System Issues - -### 5. Record Type Definitions Don't Work as Expected -**Severity:** Medium -**Status:** Needs Investigation - -Defining a record type and then creating values of that type doesn't work: - -```lux -type ComponentStatus = { - name: String, - status: HealthStatus, - message: String, - fix: String -} - -fn checkNb(): ComponentStatus with {Process} = { - // ... - { name: "nb", status: Healthy, message: "ok", fix: "" } - // ERROR: Cannot unify { name: String, ... } with ComponentStatus -} -``` - -**Impact:** Cannot use structured types for cleaner code organization. - -**Workaround:** Avoid record types, use multiple return values via tuples or restructure code. - -### 6. Int.parse Doesn't Exist or Has Wrong Signature -**Severity:** Low -**Status:** Confirmed - -There's no obvious way to parse a string to an integer. - -```lux -let count = Int.parse(someString) // ERROR: Unknown effect operation -``` - -**Impact:** Cannot convert string output from shell commands to numbers. - -**Workaround:** Keep numbers as strings, use shell for numeric comparisons. - ---- - -## C Backend Issues - -### 7. String Equality Comparison Generates Incorrect C Code -**Severity:** High -**Status:** Bug - -Using `==` to compare strings generates C code that compares pointers instead of string contents. - -```lux -let result = execQuiet("echo yes") -if result == "yes" then ... // C code: (result == "yes") - pointer comparison! -``` - -**Impact:** String comparisons fail in compiled binaries. - -**Workaround:** Use `String.contains` for comparison: -```lux -fn isYes(s: String): Bool = String.contains(s, "yes") -if result |> isYes then ... -``` - -### 8. String.startsWith Not Available in C Backend -**Severity:** Medium -**Status:** Bug - -`String.startsWith` works in interpreter but generates undefined function calls in C. - -```lux -String.startsWith(s, "prefix") // C error: lux_string__startsWith undefined -``` - -**Workaround:** Use `String.contains` instead. - -### 9. `let _ = expr` Pattern Not Supported -**Severity:** Low -**Status:** Bug - -The underscore wildcard pattern for discarding results doesn't work. - -```lux -let _ = Process.exec("...") // ERROR: Expected identifier -``` - -**Workaround:** Use a named binding: -```lux -let ignore = Process.exec("...") -``` - -### 10. List Literals and Recursion Cause Segfaults -**Severity:** High -**Status:** Bug - -Combining list literals with recursive functions can cause segmentation faults in compiled binaries while working fine in interpreter. - -```lux -// This crashes when compiled: -let dirs = ["a", "b", "c"] -fn processDirs(dirs: List): Unit = - match List.head(dirs) { - Some(d) => { ...; match List.tail(dirs) { Some(rest) => processDirs(rest), ... } } - None => () - } -``` - -**Workaround:** Avoid list literals with recursive processing. Inline the operations: -```lux -fn processA(): Unit = ... -fn processB(): Unit = ... -fn processC(): Unit = ... -// Call each individually -``` - ---- - -## Suggestions for Lux - -1. **Add escape sequence support** - At minimum `\"`, `\\`, `\n`, `\t` -2. **Fix String.fromChar** to return String, not Int -3. **Add raw string literals** - Something like `r"..."` or `'''...'''` for shell commands -4. **Fix the double execution bug** in the runtime (DONE) -5. **Support record type literals** matching their declared type -6. **Add Int.parse and Float.parse** for string-to-number conversion -7. **Consider a heredoc syntax** for multi-line strings with special characters -8. **Fix string equality** - Use strcmp in C backend for string == -9. **Support `let _ = `** - Allow underscore as discard binding -10. **Fix String.startsWith** in C backend -11. **Fix list literals with recursion** causing segfaults - ---- - -## Current Workarounds in grapho CLI - -1. **Double output:** FIXED in Lux c_backend.rs -2. **JSON output:** Using key=value format instead of proper JSON -3. **Quotes in output:** Avoided entirely or generated via shell -4. **Structured types:** Using individual variables instead of records -5. **Numeric parsing:** Keeping counts as strings throughout -6. **String comparison:** Using `String.contains` with helper functions instead of `==` -7. **Discarding results:** Using `let ignore = ...` instead of `let _ = ...` -8. **Lists with recursion:** Replaced with individual function calls diff --git a/grapho b/grapho deleted file mode 100755 index f6c565ba1b41d434a4354e51b89e884fb668db7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 95368 zcmb<-^>JfjWMqH=W(GS35KllEBH{p{7&vl4q7aS)g9QUGg9C#cgDe9Z0|NsK0|Nt0 z9Xfr338Du^b3nKZ%usz2AO-^i13DcHRR^PCwu5MpeNbr(%0dJp1fv-QAbgNMRuEGG zL@+QgpwYfJA>uF^Ss%nckO?3)sI&ys!!R0IA1G`hd?4y0Vo+%Xuwxh)ETA+@A1Js$ z`ZA#UGNAfkv;ar}0|Nt$hJ`1{jUc?k9%2tV4Rt0wp3wFEfa*i1(Siva*Pu`cep-@3 zj(q`8eLwUe?nI}TK>Y`!L3V)b3w&CV0ty!pn-~m@c7`CReYoOb1vLG^Xo#yA81(Zp zEA)#?@{3aS%ahECG775lveJ^P%5%yqjEt*tQ;Lep%}tULD=W%PbklP(lah6f^h}I& zP0aOkGL!UkQgm}N^GYjpD=f@(%}n%)^Yx4%u2yAWV9;k^U;t$=Nd^W6c?JdsF$M+( zMTj&5H2E^fLixH33=Ez)-UCSqGB7X*F)%PlBV`AWI58L$FQBL*CQdlf3}k0uU;rh1 z9;i4Mlt!kc7#JAjpaLqO^v=M*pw7U+z|FwGpvJ(!018JvP`Satz@WjvzyNX!h!2WC zh?^S0xLcgxgZ)B7Gs2j1-iTu4sma2*rBVxjYAw1U!br?SN|4=`eYpTmM|fT zE@ZQo;4nuOhdBW_)PvFl2qT*fVuR8RHuuZoFh2u_`Bpf@n{kLU<1qgU4)vh4h0UER zILz_KAufkQ9F)GWnIDEj{WKiz%*P=vfWw>#IO07FhdCZN%-MxQ{VE*dXK{$f;xNAh zhx(&9#6jgBw(xYsVLlfQ@n{_8YvE8oA4hoB;4miSHB(a1cEx#Z&kD)j}IXkrkWMEEe9z%S5ZfY*fyyB9g;*uhU z;?%qpuxVf`LFO@}r

o7ndYe<|XE)GUR5bWEL^R$7dGjCmR`qTvU>u!w?@|l$u-y zR$i2vn3I#A%#aJA3X*g3i$M+q)pzm5C5c5P@wthac??CVx%p)viR6mJ__WNt#GK5k zRFKn>Gm01rz|Ku8NzKUt*`JzM#*hXvD6OEhq?jQ&KQAvexdi0Wyn>?4yplAq-HFM` zsl~+%5O0ArCYOW!UzD6%z>rp)nwkwVKM%wMxdv3jnlZThcse=98|fKaz?p_7aHg>_ zoQV)LG=~csBSek$5NsnoQwIHv{M=Oiq?}Uy;-X~z^rFOqjC}p%oJ{@v(h`s-Ks2c0 zx1y-ofUG;qC_6nTCq1Ruq})6&(W0ub%rLh&(;&B?tRSl*CDB4RJvmv|&{WSz&p;R4 z;>b*5i1!TfjZaA}N=?r!E=es4@paD0&r1zSOv(YpO?qyA9yHS8Axg0-1lOg^3``6x z3`}6i2qr;nRxpbVOoI5x7^H)dft`VafsKI^tO6tg!Vpz3Qy3XI7_u1|V9i~I9TTUq zF)(m4ltRU(fcYE@4N(4OFrS^F8_E~S%;aTYU}KmD!R?90C>O3=9mgb~&gm1Xs0MQ5&hw&BA z#1j%B>MYR29iZY4XyOV`aSt@{2T*60LqVm(lGG^C?7_{#2ujR&kU$MOk4rl zKq^2JKLD!m85kHU(8MQz8e|7#KdFi5Eb{f1rs6K*brL;SDq20V>XcCVm0xUja1n15j~T zyur+w0BW3q+N5ae1)$=v_=l-yfSTihrrrT69)KoZ02PO&FPJ$7pvEx+149Oy`VYpS zRL#I}As&(*L2YAD+Z`gxz;FXe9A*|s?g5fGtep-Le}N

!X0gKOl)iqYxy_@B>L4 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