Releases: Twinklebear/ispc-rs
Releases · Twinklebear/ispc-rs
Release 0.3.4
Update dependencies, thanks @gwihlidal !
Release 0.3.3
Changes
Update dependencies
Release 0.3.2
Changes
- Update dependencies, fixes linking with latest msvc + Rust on Windows.
- Switch from
write
towrite_all
when outputting the generated bindings, fixes build on nightly.
Release 0.3.1
Changes
- Warnings from ISPC will now be logged to the console using the new
cargo:warning=
, rust-lang/cargo#2630 - Add support for the
--cpu=skx
flag added in ISPC 1.9.1
Issues
- Default task system scalabilty.
Other TODOs
- Make the default instrumenting provide more useful statistics.
Release 0.3.0
Breaking
This update moves to bindgen 0.18.0 from 0.17.0 which no longer prefixes the names of structs in C with Struct_
. If you're using exported structs from ISPC you should only need to do a find and replace to get things building again.
Changes
- Add support for ISPC's instrumenting to record performance information from ISPC in Rust. A default instrument is provided which simply logs the messages but like the TaskSystem you can override it with your own. I do plan to improve the default as well to log out a more useful summary of statistics. Note that due to a bug in how ISPC generated the
ISPCInstrument
function declaration ISPC 1.9.1 or higher is required to use instrumenting. - Add support for more ISPC compiler options:
--cpu=<target>
can be set viaConfig::cpu
to override the default CPU target (host)--force-alignment=<value>
can be set viaConfig::force_alignment
- extra include paths can be specified with
Config::include_path
- Various toggles:
--no-omit-frame-pointer
,--nostdlib
,--nocpp
,--quiet
,--werror
,--woff
,--wno-perf
--target=<target>
can be set viaConfig::target_isa
to override the default ISA and vector width (host)- The ISPC compiler version being used is now available via
Config::version
Issues
- Default task system scalabilty.
Other TODOs
- Make the default instrumenting provide more useful statistics.
Release 0.2.1
Changes
- When compiling or linking ISPC code fails the process will exit with
EXIT_FAILURE
instead of panic'ing, this results in the error log being logged out correctly resolving the issue where occasionally the errors wouldn't be printed. - Expose more ISPC compiler options:
- Setting defines
- Selecting the math lib to use
- Selecting the addressing mode
- Extra ISPC compiler optimization options
Issues
- Default task system scalabilty.
0.2.0 - Task System Flexibility and Dependency Tracking
Changes
- The
TaskSystem
trait no longer requires thatget_context
is implemented, removing the restriction that people use the task system design & types provided in theispc::task
module and are now free to implement their own design. - ISPC files and each files dependencies will now be tracked by Cargo, the appropriate
cargo:rerun-if-changed
info will be given to Cargo.
Issues
- Sometimes when compilation fails and the library panics to abort compilation the ispc compiler output won't be logged out.
- Default task system scalabilty.
Release 0.1.0 - Task System
Changes
- This release adds initial support for ISPC's task system. Now the ISPC
launch
construct can be used for task parallelism where the tasks will be scheduled on tonum_cpus
threads for execution. The task system is relatively simple currently so it may not scale well to a lot of cores or large numbers of launches. It's also possible to replace the task system with your own by implementing the TaskSystem trait, though this is still somewhat experimental and constrained. ispc::compile_library
will now panic if any stage of building the library fails, behaving more like gcc-rs.
Issues
- Sometimes when compilation fails and the library panics to abort compilation the ispc compiler output won't be logged out.
- Task system scalability
- Easier/more flexible path for providing your own task execution backend.
- Task system scalability
0.0.1
Fix some wording