# Releases
## Version 0.10.0 (2024-12-21)
### Bug fixes
* Issue [#69](https://github.com/kenba/opencl3/issues/69) Unsound issue in SvmVec.
### New Features
* Issue [#70](https://github.com/kenba/opencl3/issues/70) UpdSupport dynamic linking.
## Version 0.9.5 (2023-12-22)
### New Features
* Issue [#64](https://github.com/kenba/opencl3/issues/64) Update with new features in OpenCL-Headers repo.
## Version 0.9.4 (2023-11-05)
### New Features
* Issue [#64](https://github.com/kenba/opencl3/issues/64) Update with new functions in OpenCL-Headers repo.
## Version 0.9.3 (2023-05-11)
### New Features
* PR [#60](https://github.com/kenba/opencl3/pull/60) Support querying PCIE information for Intel devices.
## Version 0.9.2 (2022-12-30)
### Bug fixes
* Issue [#58](https://github.com/kenba/opencl3/issues/58) Compile failure due to unmarked unsafe function call in program.rs.
## Version 0.9.1 (2022-09-20)
### Bug fixes
* PR [#54](https://github.com/kenba/opencl3/pull/54) Unshadow device re-exports.
### New Features
* Issue [#55](https://github.com/kenba/opencl3/issues/55) Add Khronos `cl_khr_command_buffer_mutable_dispatch` extension.
## Version 0.9.0 (2022-09-10)
### Breaking Changes
* Issue [#51](https://github.com/kenba/opencl3/issues/51) Undefined behaviour when using underlying OpenCL pointers without any unsafe.
* Issue [#52](https://github.com/kenba/opencl3/issues/52) `CL_MEM_USE_HOST_PTR` can result in undefined behaviour.
### New Features
* PR [#53](https://github.com/kenba/opencl3/pull/53) added `sync` for all threadsafe OpenCL objects.
## Version 0.8.1 (2022-07-23)
### Bug fixes
* Issue [#49](https://github.com/kenba/opencl3/issues/49) Better Error messages for
`ExecuteKernel::set_arg`.
### New Features
* Update for OpenCL extension `cl_ext_image_requirements_info`.
* PR [#50](https://github.com/kenba/opencl3/issues/50) Introduce `track_caller` for panicing methods of `ExecuteKernel`.
## Version 0.8.0 (2022-05-02)
### Breaking Changes
* Issue [#47](https://github.com/kenba/opencl3/issues/47) Base `opencl3` on [opencl-sys](https://crates.io/crates/opencl-sys) crate.
* Issue [#48](https://github.com/kenba/opencl3/issues/48) Put deprecation notices behind conditional attributes.
## Version 0.7.0 (2022-04-10)
### Breaking Changes
* Transition to Rust 2021 Edition.
## Version 0.6.3 (2021-12-30)
### New Features
* Issue [#44](https://github.com/kenba/opencl3/issues/44) Add provisional command-buffer extension. See: [cl_khr_command_buffer](https://www.khronos.org/registry/OpenCL/specs/3.0-unified/html/OpenCL_Ext.html#cl_khr_command_buffer).
## Version 0.6.2 (2021-12-19)
### New Features
* Issue [#37](https://github.com/kenba/opencl3/issues/37) Implement DeserializeSeed for ExtendSvmVec to enable `serde` to deserialize directly into an `SvmVec`.
### Bug fixes
* Issue [#45](https://github.com/kenba/opencl3/issues/45) Examples and tests have `CL_MEM_READ_ONLY` and `CL_MEM_WRITE_ONLY` swapped over.
## Version 0.6.1 (2021-11-12)
### New Features
* Issue [#43](https://github.com/kenba/opencl3/issues/43) Update for new OpenCL extensions: `cl_khr_external_memory`, `cl_khr_external_semaphore` and `cl_khr_semaphore`.
## Version 0.6.0 (2021-10-16)
### Breaking Changes
* Issue [#41](https://github.com/kenba/opencl3/issues/41) Remove cl3 Info enums to support new OpenCL versions and extensions.
* Add UUID and LUID types. See cl3 Issue [#13](https://github.com/kenba/cl3/issues/13) Remove Info enums to support new OpenCL versions and extensions.
* Remove example from README.md.
## Version 0.5.3 (2021-10-10)
### New Features
* Issue [#38](https://github.com/kenba/opencl3/issues/38) Add SVM fine grain system support.
* Issue [#40](https://github.com/kenba/opencl3/issues/40) Replace all calls to `to_string` with `from` or `into`.
* Issue [#42](https://github.com/kenba/opencl3/issues/42) add `From` traits.
* Add `get_all_devices` function.
## Version 0.5.2 (2021-09-19)
```toml
[dependencies]
libc = "0.2"
cl3 = { version = "0.4", default-features = false }
serde = { version = "1.0", optional = true }
```
### New Features
* Issue [#39](https://github.com/kenba/opencl3/issues/39) Update for latest OpenCL-Headers.
* Add CONTRIBUTING and CODE_OF_CONDUCT documents.
## Version 0.5.1 (2021-09-17)
```toml
[dependencies]
libc = "0.2"
cl3 = { version = "0.4.2", default-features = false }
serde = { version = "1.0", optional = true }
```
### New Features
* Issue [#37](https://github.com/kenba/opencl3/issues/37) Implement Serde's Serialize, Deserialize for SvmVec.
### Bug fixes
* Issue [#32](https://github.com/kenba/opencl3/issues/32) Example from readme has zero output on GTX 1060 Max-Q.
* Issue [#35](https://github.com/kenba/opencl3/issues/35) Superfluous/Misleading generic parameter in `ExecuteKernel::set_arg_local_buffer`.
## Version 0.5.0 (2021-09-12)
### Breaking Changes
* Improve `SVM` interface and documentation.
* Remove svm_capabilities parameter from `SvmVec` methods.
### Bug fixes
* Issue [#33](https://github.com/kenba/opencl3/issues/33) Coarse-grained SVM has to be mapped before usage!
## Version 0.4.1 (2021-08-21)
Depends on:
`cl3 = { version = "0.4.2", default-features = false }`
### New Features
* Issue [#30](https://github.com/kenba/opencl3/issues/30) opencl3 cannot be compiled with OpenCl 1.2 features only.
## Version 0.4.0 (2021-08-20)
Depends on `cl3` = "0.4.2".
### Breaking Changes
* Issue [#26](https://github.com/kenba/opencl3/issues/26) Should `CommandQueue.html::enqueue_write_buffer` take a mutable buffer reference.
* PR [#27](https://github.com/kenba/opencl3/pull/27) Make mutability explicit.
### New Features
* Issue [#25](https://github.com/kenba/opencl3/issues/25) Using `set_event_callback`.
## Version 0.3.1 (2021-08-06)
Depends on `cl3` = "0.4.1".
### New Features
* Add Device method for `cl_khr_integer_dot_product` extension.
## Version 0.3.0 (2021-07-10)
### Breaking Changes
* Issue [#21](https://github.com/kenba/opencl3/issues/21) `Device::available()` should return a boolean.
* PR [#22](https://github.com/kenba/opencl3/pull/22) Return booleans for device information where applicable.
* Issue [#24](https://github.com/kenba/opencl3/issues/24) Use `bool` instead of `cl_bool`.
* Use CL_BLOCKING and CL_NON_BLOCKING in enqueue calls.
## Version 0.2.4 (2021-07-03)
### New Features
* Issue [#18](https://github.com/kenba/opencl3/issues/18) Return UUID as array.
* PR [#19](https://github.com/kenba/opencl3/pull/19) Export sizes of UUID and LUID.
### Bug fixes
* Issue [#20](https://github.com/kenba/opencl3/issues/20) Restore `c_void` to program.rs.
## Version 0.2.3 (2021-05-30)
Depends on `cl3` = "0.4.0".
### New Features
* Issue [#15](https://github.com/kenba/opencl3/issues/15) It's safe to implement `Send` for most of the types.
* PR [#16](https://github.com/kenba/opencl3/pull/16) Implement Send for most of the types.
* PR [#17](https://github.com/kenba/opencl3/pull/17) Implement Send for some of the types.
## Version 0.2.2 (2021-05-22)
Depends on `cl3` = "0.3.1".
### New Features
* Issue [#13](https://github.com/kenba/opencl3/issues/13) Higher level create_sub_buffer call.
* Issue [#14](https://github.com/kenba/opencl3/issues/14) Adding Debug derives.
* Add OpenCL `cl_ext.h` functions.
* Add `Direct3D` extension methods.
* Add feature `cl_apple_setmemobjectdestructor` for `cl3`.
## Version 0.2.1 (2021-05-16)
Depends on `cl3` = "0.3".
### New Features
* Add extension `device_info` values.
* Add `OpenGL` extension functions.
* Add `OpenGL ES` extension functions.
## Version 0.2.0 (2021-04-18)
Depends on `cl3` = "0.2".
### Breaking Changes
* Issue [#10](https://github.com/kenba/opencl3/issues/10) Change the API to use String instead of ffi::CString.
* Change `set_wait_event` to take `Event` reference.
### New Features
* Issue [#9](https://github.com/kenba/opencl3/issues/9) Support running multiple instances of the same kernel simultaneously.
* Issue [#12](https://github.com/kenba/opencl3/issues/12) Improve OpenCL error handling.
* Add `from_device_type` method for `Context`.
* Add `ClMem` trait object.
* Add `CommandExecutionStatus` and `EventCommandType`.
## Version 0.1.4 (2021-03-26)
### Changes
* PR [#4](https://github.com/kenba/opencl3/pull/4) Implement Clone for CommandQueue
* Issue [#5](https://github.com/kenba/opencl3/issues/5) Consider replacing unwrap with expect for error handling.
* PR [#6](https://github.com/kenba/opencl3/pull/6) Make types Send and Sync where applicable.
* PR [#7](https://github.com/kenba/opencl3/pull/7) Implement Clone for most of the types.
* Issue [#8](https://github.com/kenba/opencl3/issues/8) Retrieving a program build log might be impossible.
* PR [#10](https://github.com/kenba/opencl3/pull/10) Replace calls to to_str with to_string for issue [#10](https://github.com/kenba/opencl3/issues/10).
## Version 0.1.3 (2021-01-16)
### Changes
* PR [#1](https://github.com/kenba/opencl3/pull/1) Add Buffer type field as PhantomData.
* Issue [#2](https://github.com/kenba/opencl3/issues/2) Consider adding PhantomData to Image and Pipe memory objects.
* PR [#3](https://github.com/kenba/opencl3/pull/3) Remove Buffer cast method.
* Remove unnecessary templates from methods.
## Version 0.1.2 (2021-01-12)
### Changes
* Remove `event_wait_list` from the `enqueue_nd_range` method.
* Add `wait` method to `event`.
* Add `opencl2_kernel_test.rs`.
* Add example to README.
* Don't raise error in `integration_test` if device is not SVM capable
## Version 0.1.1 (2021-01-04)
### Bug fixes
* Fix build on OpenCL 2.0 ICD.
* Fix integration tests on Intel Skylake.
* Get the max_work_item_dimensions from the device CommandQueue.
## Version 0.1.0 (2020-12-31)
Depends on `cl3` = "0.1".
### Features
* OpenCL objects implemented by Rust structs that manage their resources by implementing the `Drop` trait to perform [RAII](https://doc.rust-lang.org/rust-by-example/scope/raii.html), e.g. Context, Program, CommandQueue, etc.
* `safe` Rust functions that call OpenCL C API functions and return Rust Result types.
* A `Vec` implemented using OpenCL Shared Virtual Memory (SVM), see [svm](src/svm.rs).