Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions .github/workflows/reusable-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ on:

jobs:
build:
name: Build and test infc
name: Build and test
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-14]
Expand Down Expand Up @@ -154,7 +154,6 @@ jobs:
run: |
New-Item -ItemType Directory -Force -Path artifact-infc
Copy-Item target\x86_64-pc-windows-gnu\release\infc.exe artifact-infc\
Copy-Item book\check_deps.ps1 artifact-infc\

- name: Prepare infs Artifact Package (Windows)
if: runner.os == 'Windows' && inputs.package-artifacts && inputs.release-build
Expand Down
11 changes: 10 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Rename environment variable and directory for consistency ([#96])
- `INFS_HOME` → `INFERENCE_HOME`
- `~/.infs` → `~/.inference`
- Add `infc` symlink to installed toolchain alongside `inf-llc` and `rust-lld` ([#96])
- Add `infc` symlink to installed toolchain ([#96])
- Improve `infs install` to auto-set default toolchain when none is configured ([#96])
- When installing an already-installed version without a default toolchain, `infs install` now automatically sets that version as default and updates symlinks
- Provides graceful recovery if default toolchain file was manually removed
Expand All @@ -86,6 +86,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Remove manifest caching from `infs` CLI ([#116])
- `fetch_manifest()` now always fetches from network
- Simplifies CLI code; VS Code extension manages its own fetching lifecycle
- Remove LLVM toolchain management from `infs` CLI ([#126])
- Flatten toolchain layout: `infc` binary now at toolchain root (no more `bin/` subdirectory)
- Remove `inf-llc`, `rust-lld`, and `libLLVM` binary management
- Simplify doctor checks: single `infc` check replaces `inf-llc`, `rust-lld`, and `libLLVM` checks
- Remove platform-specific `#[cfg(target_os = "linux")]` branching in `run_all_checks()`
- Slim `InfsError` to single `ProcessExitCode` variant; all other errors use `anyhow::Result`
- Replace `rand` dependency with lighter-weight `fastrand`
- Remove dead code: unused error variants, `create_project_default()`, `available_versions()`, `selected_bg` theme field

### Build

Expand Down Expand Up @@ -272,3 +280,4 @@ Initial tagged release.
[#97]: https://github.com/Inferara/inference/issues/97
[#116]: https://github.com/Inferara/inference/pull/116
[#125]: https://github.com/Inferara/inference/pull/125
[#126]: https://github.com/Inferara/inference/pull/126
2 changes: 1 addition & 1 deletion apps/infs/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ hex = "0.4"
futures-util = "0.3"
which = "8.0.0"
dirs = "6.0.0"
rand = "0.9.2"
fastrand = "2"
ratatui = "0.30.0"
crossterm = "0.29.0"
anyhow.workspace = true
Expand Down
10 changes: 4 additions & 6 deletions apps/infs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -146,15 +146,13 @@ infs doctor

**Automatic PATH Configuration:**

On first install, `infs install` automatically adds the toolchain binaries to your system PATH:
On first install, `infs install` automatically adds the toolchain binary to your system PATH:

- **Unix (Linux/macOS)**: Modifies shell profile (`~/.bashrc`, `~/.zshrc`, or `~/.config/fish/config.fish`)
- **Windows**: Updates user PATH in registry (`HKCU\Environment\Path`)

The toolchain binaries are symlinked to `~/.inference/bin/` and made accessible system-wide:
The toolchain binary is symlinked to `~/.inference/bin/` and made accessible system-wide:
- `infc` - Inference compiler
- `inf-llc` - LLVM backend
- `rust-lld` - WebAssembly linker

After installation completes, restart your terminal or run:

Expand All @@ -169,7 +167,7 @@ source ~/.zshrc
# Close and reopen terminal
```

Manual PATH configuration is no longer required. The installed binaries will be available in new terminal sessions.
Manual PATH configuration is no longer required. The installed binary will be available in new terminal sessions.

## Interactive TUI

Expand Down Expand Up @@ -240,7 +238,7 @@ When running `build`, `run` commands, `infs` locates the `infc` compiler using t
|----------|--------|-------------|
| 1 (highest) | `INFC_PATH` env var | Explicit path to a specific `infc` binary |
| 2 | System PATH | Searches for `infc` in system PATH via `which` |
| 3 (lowest) | Managed toolchain | Uses `~/.inference/toolchains/VERSION/bin/infc` |
| 3 (lowest) | Managed toolchain | Uses `~/.inference/toolchains/VERSION/infc` |

### When to Use Each

Expand Down
5 changes: 2 additions & 3 deletions apps/infs/docs/qa-test-suite.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

This document contains tests that require manual verification or are not yet automated.

> **Automated Tests:** Run `cargo test -p infs` to execute 429 automated tests (360 unit + 69 integration).
> **Automated Tests:** Run `cargo test -p infs` to execute 388 automated tests (320 unit + 68 integration).

---

Expand Down Expand Up @@ -157,7 +157,6 @@ Test fixtures are located in `apps/infs/tests/fixtures/`:
| `example.inf` | Complex example with multiple functions |
| `nondet.inf` | Non-deterministic features (forall, exists, assume, unique) |
| `syntax_error.inf` | Syntax error handling |
| `type_error.inf` | Type error detection |
| `empty.inf` | Empty file edge case |
| `uzumaki.inf` | Uzumaki operator (`@`) |
| `forall_test.inf` | Forall block with binding |
Expand All @@ -182,4 +181,4 @@ cargo test -p infs -- --nocapture

---

*Last Updated: 2026-01-27*
*Last Updated: 2026-02-16*
4 changes: 1 addition & 3 deletions apps/infs/src/commands/doctor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,7 @@
//! - Platform detection
//! - Toolchain directory existence
//! - Default toolchain configuration
//! - inf-llc binary presence
//! - rust-lld binary presence
//! - libLLVM shared library (Linux only)
//! - infc compiler binary presence
//!
//! ## Output Format (Public Contract)
//!
Expand Down
14 changes: 4 additions & 10 deletions apps/infs/src/commands/self_cmd.rs
Original file line number Diff line number Diff line change
Expand Up @@ -124,16 +124,10 @@
if new_binary_path.exists() {
replace_binary(&new_binary_path, platform)?;
} else {
let bin_path = temp_dir.join("bin").join(&new_binary_name);
if bin_path.exists() {
replace_binary(&bin_path, platform)?;
} else {
bail!(
"infs binary not found in downloaded archive. Expected at {} or {}",
new_binary_path.display(),
bin_path.display()
);
}
bail!(

Check warning on line 127 in apps/infs/src/commands/self_cmd.rs

View check run for this annotation

Codecov / codecov/patch

apps/infs/src/commands/self_cmd.rs#L127

Added line #L127 was not covered by tests
"infs binary not found in downloaded archive. Expected at {}",
new_binary_path.display()

Check warning on line 129 in apps/infs/src/commands/self_cmd.rs

View check run for this annotation

Codecov / codecov/patch

apps/infs/src/commands/self_cmd.rs#L129

Added line #L129 was not covered by tests
);
}

std::fs::remove_file(&download_path).ok();
Expand Down
Loading