Skip to content

Feature/fix glsl tests#1

Merged
Yona-Appletree merged 51 commits into
mainfrom
feature/fix-glsl-tests
Jan 22, 2026
Merged

Feature/fix glsl tests#1
Yona-Appletree merged 51 commits into
mainfrom
feature/fix-glsl-tests

Conversation

@Yona-Appletree

Copy link
Copy Markdown
Member

No description provided.

- Clear log buffer and reset instruction count on each function call entry
- Always show disassembly around current PC in emulator state output
- Remove unused debug code for unexpected zero returns
…cution

- Add set_max_instructions() method to allow changing limit after creation
- Temporarily increase instruction limit during bootstrap init (10x or 10000, whichever is higher)
- Restore original limit after bootstrap init completes
- Allows strict limits for normal execution while allowing longer bootstrap init
- Update merge_symbol_maps to return Result and detect conflicts
- Only report conflicts when both symbols are defined (non-zero addresses)
- Undefined symbols (0x0) in object file are expected and resolve to base executable
- Fail fast with clear error message if actual conflicts are detected
…icts

- Rename main() function to _lp_main() in lp-builtins-app
- Update _code_entry() to call _lp_main() instead of main()
- Prevents symbol conflicts when user code defines main() function
- Enables fail-fast conflict detection for actual symbol conflicts
- Show emulator state and execution log on function execution failure
- Match error output format used by filetests for consistency
- Condense match arms in builtins registry
- Remove extra blank lines in codegen
- Add blank line in math converters
…nsformation

- Sort functions by name before declaring them in transformed module to ensure deterministic FuncId assignment
- Sort functions by name before defining them to match declaration order
- Use FuncId from func_id_map when storing transformed functions instead of re-declaring
- Make identity transform remap FuncIds when copying call instructions (same as fixed32 transform)
- Update test_do_while expected value from 1 to 10 to match filetest behavior

Fixes issue where HashMap iteration order caused FuncIds to be assigned inconsistently,
leading to incorrect function calls (e.g., main calling itself recursively).
…ectModule

- Convert TestCase names (e.g., %add) to User names during fixed32 transform
- Convert TestCase names to User names during identity transform
- Set function name to match FuncId in add_function for consistency
- Set function name to match FuncId when storing transformed functions

Fixes test_fixed32_call failure where Cranelift's ObjectModule hits
unimplemented!() for TestCase names in relocations. ObjectModule only
supports User external names, so we convert TestCase to User format.
- Update format_module to use format_function which converts User names
  back to TestCase names for test comparison
- Make format_function pub(crate) so it can be used by transform tests
- Add ToString import for u32.to_string() call

This allows tests to compare CLIF output correctly even though we
convert TestCase to User names internally for ObjectModule compatibility.
- Modify load_object_sections to collect and load all .text.* and .data.*
  subsections, concatenating them after their parent sections
- Update build_object_symbol_map to handle subsections by calculating
  their offset within the combined section region
- Sort sections to ensure main section loads first, then subsections
  alphabetically

This fixes the bug where _init functions in .text._init subsections
weren't being loaded into memory, causing execution failures even
though symbols were found.
- Add ToString trait import for to_string() calls on &str
- Remove unused alloc::format import
- Filter compiler-internal symbols (starting with $) to prevent false conflicts
- Fix LMA offset calculation to use offset within .data section instead of offset from RAM_START
- Use __data_target_start to calculate correct offset within .data section
- Ensures init code copies correct __USER_MAIN_PTR value from LMA to RAM
- Add push.sh script for automated PR management and CI watching
- Update justfile: add --all flag to fmt commands and add check recipe
- Add .ci-artifacts to .gitignore
Run cargo fmt --all to fix formatting issues across the codebase
- Add # Safety section to wrap_structreturn_function
- Remove unnecessary casts (as *mut u8 when already *mut u8)
- Fix manual_strip warnings by using strip_prefix()
- Convert all #[allow(...)] // comment to #[allow(..., reason = "...")] format
- Fixes clippy::allow-attributes-without-reason warnings across codebase
- Add push recipe that runs check then scripts/push.sh
- Add merge recipe that runs check then scripts/push.sh --merge
- Configure git to use GITHUB_TOKEN for GitHub URLs
- Ensures cargo can fetch git dependencies from lp-cranelift repo in CI
- Set CARGO_NET_GIT_FETCH_WITH_CLI environment variable
- Configure git credential helper to use GITHUB_TOKEN
- Set up URL rewriting for GitHub URLs
- Remove URL rewriting that was causing 404 errors
- Use credential helper with GITHUB_TOKEN for authentication
- Set proper permissions on credentials file
- Remove credential helper configuration from CI workflow
- Public repos don't require authentication
- Add comments to justfile recipes for clarity
- Display workflow run ID and GitHub URL when showing build status
- Ensure we get the most recent run when multiple exist for same commit
- Pass run URL through workflow watching functions for consistent display
- Change runs-on to ubuntu-latest-arm64
- Fixes ISLE codegen build issues on x86_64
- Change from ubuntu-latest-arm64 to ubuntu-24.04-arm
- ubuntu-latest-arm64 is not a valid runner label
- ARM64 runners require explicit version specification
- Add --workspace --all-targets --no-deps flags to clippy command
- Only lint workspace members, not external dependencies
- Update format strings to use inline variable syntax
- Fix format strings in lp-riscv-tools tests and examples
- Fix format strings in lp-glsl-compiler test helpers
- Exclude lp-builtins-app from clippy checks (no_std crate)
- Update to commit 462b4f08fb which includes fix for no_std error handling
- Fixes compilation error in wasmtime-internal-jit-icache-coherence
- Update to commit bfc79b3ffb which fixes macro expansion errors
- Uses separate match statements for std and no_std cases
- Simplify CI workflow to use 'just validate' command
- Update push script to use 'gh run watch' for live CI output
- More responsive feedback during CI runs
- Add support for compiling GLSL to RISC-V machine code using a new JIT path
- Introduce `build_jit_executable` to generate executable modules
- Enhance error reporting with detailed messages and span info
- Update `Target` to support JIT module creation for host architecture
…-elf

- Add log to workspace dependencies with default-features=false to prevent std features
- Add alloc::format and alloc::vec imports throughout codebase for no_std compatibility
- Replace f32::trunc() calls with no_std-compatible trunc_f32() function
- Add get_function_ptr() method to GlslJitModule for function pointer access
- Fix unreachable code warnings by removing unreachable!() after panic
- Make Target import conditional on std feature to fix unused import warning
- Move esp32-glsl-jit from exclude to members list
- Exclude from default-members (only builds for RISC-V target)
- Update dependencies to use workspace = true
- Move release profile settings to workspace root
- Update just esp32-build to use -p flag from workspace root
- Add esp32-glsl-jit to clippy exclude list
- ESP32 dependencies don't compile for host target
- Add clippy-esp32 to lint ESP32 code with RISC-V target
- Add clippy-builtins to lint lp-builtins-app with RISC-V target
- Add clippy-all to run clippy on all packages including embedded targets
- Remove unused Flags import from esp32-glsl-jit
- Remove separate clippy-builtins command
- Keep only clippy-esp32 for embedded target linting
- Update clippy-all to use simplified structure
- Add target-specific build commands: build-host, build-rv32, build (depends on both)
- Add target-specific clippy commands: clippy-host, clippy-rv32, clippy (depends on both)
- Rename build-builtins to filetests-setup (more descriptive of purpose)
- Use rv32_packages variable to avoid duplication
- build-rv32 builds esp32-glsl-jit in release (too large for debug)
- check now delegates to fmt-check and clippy
- Consistent naming throughout
- Remove unused alloc::format import from builtins registry
- Reorder imports alphabetically in multiple files
- Remove unnecessary type casts in glsl_value (trunc_f32 already returns i64)
- Reformat long match patterns to single lines in registry.rs
- Reformat imports to multiple lines in builtin_refs.rs
- Change format! macro from named to positional parameters
- Rename flags to _flags in target.rs for clarity
- Add blank line in math.rs
- Format allow attribute in mod.rs
- Change find_builtins_executable to only check release profile
- Debug builds are 954KB vs 37KB for release, causing slow test execution
- filetests-setup builds in release mode, so tests should use release builds
- Add conditional use alloc::format for no_std builds in generator
- Required for format! macro when building for embedded targets
- Use ci command which runs check build test
- Replaces removed validate command
- Remove unused crate::debug imports from layout.rs files
- Fixes clippy warnings in CI
- Remove unused 'use crate::debug;' imports from elf_loader modules
- Macro is already available via #[macro_use] mod debug; in lib.rs
- Fixes CI errors about unused imports when std feature is enabled
- Pin to stable toolchain with rustfmt and clippy components
- Ensures consistent Rust version between local and CI
- Similar to .nvmrc for Node.js projects
@Yona-Appletree
Yona-Appletree merged commit 51e527a into main Jan 22, 2026
1 check passed
Yona-Appletree added a commit that referenced this pull request Jan 26, 2026
Yona-Appletree added a commit that referenced this pull request Apr 22, 2026
… surface

- New `lp-domain/lp-domain/` crate (no_std + alloc; `std` and `schema-gen` features).
- Identity & addressing: `Uid(u32)`, `Name`, `NodePath`/`NodePathSegment`,
  `PropPath` (re-export of `lps_shared::path::LpsPathSeg` Vec), `NodePropSpec`,
  `ArtifactSpec`, `ChannelName` - all with parse/Display/serde and tests.
- Quantity-model leaves: `Kind` (16 v0 variants) + `Dimension`/`Unit`/
  `Colorspace`/`InterpMethod` and per-Kind impls; `Constraint` (F32-narrowed
  `Free`/`Range`/`Choice`).
- Quantity-model composition: `Shape` (Q15 Option A - composed variants carry
  `Option<ValueSpec>`, scalar carries mandatory `ValueSpec`), `Slot` with
  `default_value(ctx)` and `storage()`.
- `ValueSpec`/`TextureSpec`/`LoadCtx` stub with hand-written `PartialEq` and
  private wire enum for serde (works around `LpsValueF32` lacking those derives).
- `Binding::Bus { channel }` + `BindingResolver` trait stub; `Presentation`
  (10 v0 variants, snake_case serde).
- Trait surface: `Node` (object-safe), `Artifact`, `Migration`, `Registry`,
  cross-cutting `DomainError`.
- `lps-shared`: serde always-on plus optional `schemars` feature for
  `LpsType`, `StructMember`, `LpsPathSeg`.
- Workspace: pin `schemars = 1.2.1` (default-features = false, derive only);
  add `lp-domain/lp-domain` to members and default-members.
- `schema_gen_smoke.rs`: `schemars::schema_for!` on every public lp-domain
  type plus recursive Slot/Shape check (under `schema-gen` feature).
- Update `docs/design/lightplayer/quantity.md` for Q15 Option A: §6 Slot
  rewrite + "Defaults for compositions" subsection; §12 #1 non-negotiable
  rewritten; TL;DR item 2 and §7 Conventions bullet realigned.

Plan: docs/plans-old/2026-04-22-lp-domain-m2-domain-skeleton/
Made-with: Cursor
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant