Releases: diegoleteliers10/fasty
v0.4.2
fix(build): vendor openssl for git2 to fix macOS x86_64 cross-compile git2's default features include https, which pulls in openssl-sys. On macos-latest (aarch64) cross-compiling to x86_64, pkg-config can't locate openssl for the target triple, causing the release build to fail. Adding 'vendored-openssl' bundles openssl with libgit2, removing the system dependency and making the cross-compile deterministic. Refs: v0.4.2 release build failure on x86_64-apple-darwin
v0.4.1
fix: align rounded box-drawing corners precisely with shared references
v0.4.0
Release v0.4.0 🚀
This release delivers major performance optimizations across startup latency, terminal throughput, and GPU rendering, while also fixing visual issues and introducing a comprehensive benchmarking suite for competitive performance analysis.
⚡ Performance & I/O Improvements
Increased PTY Buffer Size
- Increased PTY read buffer size from 8KB to 64KB in
terminal_state.rs. - Significantly reduces system calls and context switching during heavy terminal output workloads.
- Improves throughput and responsiveness when processing large volumes of text.
Lazy Font Loading
-
Refactored the font atlas in
atlas.rsto pre-render only essential ASCII characters and common punctuation at startup:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.- : -
Additional glyphs are now rasterized on demand.
-
Reduced window startup time by approximately 31%, from ~1.67s to ~1.15s.
GPU ShaderModule Caching
- Implemented a static shader cache using
std::sync::OnceLockinpipeline.rs. - WGSL shaders are compiled only once and reused across the application.
- Eliminates redundant shader compilation when resizing atlases or creating new windows.
🐛 Bug Fixes
Fixed Invisible Text in "About Fasty"
- Resolved a texture binding issue in
pipeline.rs. - The UI was incorrectly using the main text
bind_groupinstead of the dedicatedui_bind_group. - Version information and application description now render correctly.
Configuration-Aware Font Integration
- Updated the About window to dynamically use the font family selected in user settings.
- Removed reliance on statically loaded fonts that may not exist on the host system.
- Ensures consistent typography across the entire application.
📊 Benchmarking & Testing
End-to-End Benchmark Suite
-
Added
benchmark_e2e.pyfor automated performance testing. -
Supports:
- Building Fasty automatically.
- Generating large text and ANSI color payloads.
- Measuring execution latency.
- Comparing performance against Ghostty and Konsole.
VTE Parser Micro-Benchmarks
- Added Criterion-based benchmarks in
benches/parser_bench.rs. - Provides detailed performance validation for the terminal parser.
- Enables regression detection and optimization tracking over time.
Summary
- ⚡ Up to 31% faster startup times through lazy font loading.
- 📈 Improved terminal throughput with a 64KB PTY buffer.
- 🎮 Reduced GPU overhead through shader caching.
- 🐛 Fixed rendering issues in the About window.
- 🔤 Proper integration with user-selected fonts.
- 📊 Added comprehensive benchmarking infrastructure against competing terminals.
v0.3.9
v0.3.9: Mejoras para Windows en instalacion, renderizado y estabilidad
v0.3.8
Release v0.3.8 - fix context menu click fallthrough and tab drag anim…
v0.3.7
What's Changed in v0.3.7 🚀
This release delivers significant performance improvements, Chrome-style tab tearing, multiple bug fixes, and a cleaner, more maintainable codebase.
⚡ Performance
Instant Window Spawning
- Shared GPU glyph and UI atlases across all window renderers using
Arc<wgpu::Texture>. - New windows and detached tabs now spawn almost instantly (<1ms).
- Eliminates the previous 200–500ms texture allocation overhead.
🗂 User Experience
Chrome-Style Tab Tearing
- Tabs detach as soon as they leave the window bounds during dragging.
- Detached windows automatically appear under the mouse cursor.
- Seamlessly transitions into an OS-level window drag operation.
Drag Threshold Fix
- Fixed
drag_start_yinitialization. - Tab dragging now correctly respects the 5px movement threshold on both X and Y axes.
🛠 Codebase Improvements
Cleanup
-
Removed compiler warnings and unused variables across:
main.rspipeline.rsatlas.rswidgets/mod.rs
Dead Code Removal
-
Removed the legacy
src/pty/implementation in favor of theportable-ptyarchitecture. -
Deleted unused helper methods:
mark_dirty()strip_osc7_prefix()palette_label()basename_of()
-
Removed the unused
proxyfield and relatedWindowContextparameters.
Summary
- ⚡ Near-instant window creation.
- 🖱 Smooth Chrome-like tab tearing.
- 🐛 Improved drag behavior and bug fixes.
- 🧹 Cleaner, leaner, and more maintainable codebase.
v0.3.6-perf
perf(v0.3.6): reduce binary size 17MB->14MB, memory by ~10MB Binary optimizations (17MB -> 14MB, -18%): - image: default-features=false, features=[png] (drops avif, exr, tiff, webp, gif, etc) - alacritty_terminal: default-features=false (drops serde) - wgpu: default-features=false per-platform (drops unused backends) - winit: default-features=false, features=[rwh_06, x11, wayland, wayland-dlopen] - arboard: default-features=false (drops image dep on Windows) - resvg/usvg: default-features=false (drops gif, webp, memmap-fonts) - tiny-skia: default-features=false, features=[std] (drops png-format) - Drop unused x11 direct dep (winit handles it) - LTO: thin -> fat for slightly better optimization Memory optimizations (~10MB savings): - Font atlas: 1536x1536 -> 1024x1024 (-5.4MB GPU) - Scrollback default: 3000 -> 1000 lines (-4MB per tab) - LTO: true -> fat
v0.3.6
feat(v0.3.6): tab indicators (busy spinner + exit code dot), remove t…
v0.3.5
v0.3.5: fluid window resize, rendering fixes, deadlock fix
v0.3.4
v0.3.4 — fix Linux auto-update binary replacement