ISPC release with enhanced struct operator support, the ability to use ISPC as a library with JIT support, simplified integration with Python via nanobind wrappers, enhanced standard library functions, and numerous stability and performance improvements. Based on a patched LLVM 20.1.8.
Language Changes
Struct operator overloading has been extended. Added support for overloading unary (++
, --
, -
, !
, ~
), binary (*
, /
, %
, +
, -
, >>
, <<
, ==
, !=
, <
, >
, <=
, >=
, &
, |
, ^
, &&
, ||
), and assignment (=
, +=
, -=
, *=
, /=
, %=
, <<=
, >>=
, &=
, |=
, ^=
) operators for struct types.
Integer literal rules are now stricter:
[uUlL]
symbols (e.g., ulll
, uul
, lulu
are no longer valid).[kMG]
) must precede the type modification suffix ([uUlL]
).lL
and Ll
suffixes are no longer allowed (mixing cases to form LL
).NaN to bool
conversion now matches C/C++ behavior.
ISPC as a Library
libispc
) for embedding ISPC compilation directly into applications. It also provides CMake configuration files for easy integration into other CMake projects. The library includes experimental Just-In-Time (JIT) compilation for runtime code generation and execution. See the documentation and the new simple_lib
and simple_jit
examples demonstrating the ISPCEngine
API.Python Integration and Nanobind Support
ISPC can now generate nanobind wrappers for ISPC modules, enabling easy and lightweight integration with Python. The generated wrappers can be built into native Python modules and imported into Python code. The --nanobind-wrapper=<filename>
option enables this feature.
Three new examples show ISPC integration with Python:
Float16
--include-float16-conversions
to include float16 conversion functions in the compiled module. Useful for targets without native float16 conversion instructions, such as x86 prior to AVX2. Disabled by default.Standard Library Changes
select
now supports unsigned integer types uint8
, uint16
, uint32
, and uint64
, as well as uniform short vectors.
Added new functions: isinf
, isfinite
, srgb8_to_float
.
Short vector standard library functions have been moved to short_vec.isph
. They are no longer implicitly available and must be
included explicitly.
Added short vector type support for: fmod
, isnan
, rsqrt_fast
, clamp
.
Added an include/intrinsics
directory with SSE intrinsic headers, useful for porting intrinsics-based code to ISPC.
Performance
shuffle
/shift
/rotate
and reduce_equal
on AVX-512 targets, with up to 90% speedup.New Targets
Crash Fixes
foreach
assertion failures.signed
keyword usage.uniform bool<N>
parameters.Function Call Enhancements
Ecosystem Improvements and Community Engagement
Modernized the ISPC website with a refreshed look and structure.
Open-sourced the ISPC VS Code plugin (https://github.com/ispc/vscode-ispc). Though it has not been maintained for some time, we are committed to improving it and releasing a new version. Community contributions are welcome.
We have set up a Discord server to better connect with our community and make it easier for ISPC users to support one another. Join the ISPC Discord server: https://discord.gg/WnMqNPgs
Recommended versions of Runtime Dependencies when targeting GPU
Linux:
Alternatively, you can use a validated gfx driver stack supporting Intel® Arc™ available at https://dgpu-docs.intel.com/driver/installation.html
Windows:
Components revisions used in GPU-enabled build:
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4