mirror of
https://github.com/wailsapp/wails.git
synced 2026-03-14 14:45:49 +01:00
* feat(linux): add libpath package for finding native library paths
Add a new internal/libpath package that locates shared libraries (.so files)
on Linux systems. Supports multiple distributions and package managers.
Features:
- Multi-tier search: pkg-config -> ldconfig -> filesystem scanning
- Parallel search using goroutines for faster lookups
- Cached dynamic path discovery for Flatpak, Snap, and Nix
- Support for Debian/Ubuntu, Fedora/RHEL, Arch, openSUSE, NixOS
- Context-aware cancellation for graceful shutdown
Performance:
- Library found: ~1.4ms (parallel search)
- Library not found: ~46ms (was 84ms sequential)
- Cached path discovery: 14ns (was 15ms uncached)
* feat(libpath): add multi-library parallel search functions
Add functions to search for multiple library candidates in parallel:
- FindFirstLibrary: Search multiple libs in parallel, return first found
- FindFirstLibraryOrdered: Search in order of preference (for version priority)
- FindAllLibraries: Find all available libraries from a list
Useful when the exact library version is unknown, e.g.:
match, _ := FindFirstLibrary("webkit2gtk-4.1", "webkit2gtk-4.0", "webkit2gtk-6.0")
Also adds findLibraryPathCtx for context-aware searching used by the
multi-library functions.
* refactor(libpath): split into separate files and fix race condition
Split libpath_linux.go into smaller, focused files:
- cache_linux.go: Path cache with thread-safe init/invalidate
- flatpak_linux.go: Flatpak runtime path discovery
- snap_linux.go: Snap package path discovery
- nix_linux.go: Nix/NixOS path discovery
- libpath_linux.go: Core search functions
Fixes:
- Fix data race between init() and invalidate() by holding mutex
during cache writes inside sync.Once.Do (CodeRabbit review)
- Fix FindLibraryPathWithOptions not searching dynamic paths
(Flatpak/Snap/Nix) - now uses GetAllLibPaths() (CodeRabbit review)
|
||
|---|---|---|
| .. | ||
| cmd/wails3 | ||
| examples | ||
| internal | ||
| pkg | ||
| scripts | ||
| tasks | ||
| test | ||
| test-assets | ||
| tests/window-visibility-test | ||
| wep | ||
| .gitignore | ||
| .prettierignore | ||
| .prettierrc.yml | ||
| ANDROID_ARCHITECTURE.md | ||
| build_ios.sh | ||
| fix-darwin-ios-constraints.sh | ||
| go.mod | ||
| go.sum | ||
| IOS_ARCHITECTURE.md | ||
| IOS_FEATURES_TODO.md | ||
| IOS_RUNTIME.md | ||
| old | ||
| README.md | ||
| release-notes.txt | ||
| release_notes.md | ||
| Taskfile.yaml | ||
| test-ios-compilation.go | ||
| test-new-ios-build.sh | ||
| TESTING.md | ||
| UNRELEASED_CHANGELOG.md | ||
| verify-ios-setup.sh | ||
v3 Alpha
Thanks for wanting to help out with testing/developing Wails v3! This guide will help you get started.
Getting Started
All the instructions for getting started are in the v3 documentation directory: mkdocs-website.
Please read the README.md file in that directory for more information.