VBuffers is a robust and versatile Java API designed to offer advanced buffer management and manipulation capabilities, catering to the needs of various applications that require efficient data handling and organization.
- Flexible Layouts: Utilize Java Interfaces and Annotations to create powerful and adaptable buffer layouts.
- Rich Collections API: Benefit from an extensive built-in collections API, including Indexed, Iterables, Streams, and more.
- User-defined Getters and Setters: Customize Getters and Setters while taking advantage of runtime-generated glue code for seamless integration.
- Custom Type Adapters: Implement user-defined type adapters to enable tailored byte serialization and deserialization for specific use cases.
- Nested Type Handling: Manage nested types effectively, emulating the power and organization of C structs.
- Customizable Attributes: Configure alignment, padding, or overlapping attributes to suit specific requirements.
- Memory Implementation Agnostic: Ensure compatibility with various memory implementations, such as NIO and Unsafe, for a flexible solution.
- Attribute Aliasing: Enable aliasing between interchangeable attributes based on name and type for more efficient data handling.
- Advanced Copy Operations: Perform masked, shuffled, and swizzled copies across the same or different buffers for sophisticated data manipulation.
VBuffers provides a comprehensive solution for developers seeking efficient and customizable buffer management in Java applications, ensuring that data handling remains streamlined and adaptable to various requirements.
| Name | Priority | Impl | Test | Docs | Bench |
|---|---|---|---|---|---|
| Definition | Essential | ✴️ | ❌ | ❌ | ❌ |
| Stride | Essential | ✴️ | ❌ | ❌ | ❌ |
| Attribute | Essential | ✴️ | ❌ | ❌ | ❌ |
| Accessors | Essential | ✴️ | ❌ | ❌ | ❌ |
| Name | Priority | Impl | Test | Docs | Bench |
|---|---|---|---|---|---|
| Definition | Essential | ✴️ | ❌ | ❌ | ❌ |
| Name Aliasing | High | ❌ | ❌ | ❌ | ❌ |
| Type Aliasing | Neat | ❌ | ❌ | ❌ | ❌ |
| Different I/O Class Types | Neat | ❌ | ❌ | ❌ | ❌ |
| Name | Priority | Impl | Test | Docs | Bench |
|---|---|---|---|---|---|
| Definition | Essential | ✴️ | ❌ | ❌ | ❌ |
| Type Accessors | Essential | ✴️ | ✴️ | ❌ | ❌ |
| Primitives/Boxed Support | Essential | ✴️ | ✴️ | ❌ | ❌ |
| JOML Support | High | ✴️ | ✴️ | ❌ | ❌ |
| Nested VBuffers Support | Neat | ❌ | ❌ | ❌ | ❌ |
| JUnion Support | Neat | ❌ | ❌ | ❌ | ❌ |
| Name | Priority | Impl | Test | Docs | Bench |
|---|---|---|---|---|---|
| ByteBuffer/Java NIO | Essential | ✴️ | ✴️ | ❌ | ❌ |
| Abstract Definition | High | ❌ | ❌ | ❌ | ❌ |
| MemorySegment | High | ❌ | ❌ | ❌ | ❌ |
| Java Unsafe | Neat | ❌ | ❌ | ❌ | ❌ |
| Disk/Filesystem | Neat | ❌ | ❌ | ❌ | ❌ |
| Name | Priority | Impl | Test | Docs | Bench |
|---|---|---|---|---|---|
| Dynamic Proxy | Essential | ✴️ | ✴️ | ❌ | ❌ |
| Object Web ASM | High | ❌ | ❌ | ❌ | ❌ |
Dynamic Proxies make for great prototyping tools but are not suitable for production use. They are slow, have a lot of overhead and are generally more clunky.
ASM will take longer to implement but will be much faster and more efficient.
| Name | Priority | Impl | Test | Docs | Bench |
|---|---|---|---|---|---|
| Navigation | High | ✴️ | ❌ | ❌ | ❌ |
| Slice View | High | ✴️ | ✴️ | ❌ | ❌ |
| Flip | Neat | ✴️ | ✴️ | ❌ | ❌ |
| Compact | Neat | ✴️ | ✴️ | ❌ | ❌ |
| Duplicate View | Neat | ✴️ | ✴️ | ❌ | ❌ |
| Read-Only View | Neat | ✴️ | ✴️ | ❌ | ❌ |
| Name | Priority | Impl | Test | Docs | Bench |
|---|---|---|---|---|---|
| Basic Array | Essential | ✴️ | ✴️ | ❌ | ❌ |
| Singleton | Essential | ✴️ | ❌ | ❌ | ❌ |
| Iterators | High | ✴️ | ✴️ | ❌ | ❌ |
| Streams | High | ✴️ | ✴️ | ❌ | ❌ |
| Parallel Streams | Neat | ✴️ | ✴️ | ❌ | ❌ |
| Name | Priority | Impl | Test | Docs | Bench |
|---|---|---|---|---|---|
| Internally 1:1 | Essential | ✴️ | ✴️ | ❌ | ❌ |
| Externally 1:1 | Essential | ✴️ | ❌ | ❌ | ❌ |
| Internally Swizzling | Essential | ✴️ | ❌ | ❌ | ❌ |
| Externally Swizzling | Essential | ✴️ | ❌ | ❌ | ❌ |
| Different Backings | High | ❌ | ❌ | ❌ | ❌ |
| SSE/AVX acceleration | Neat | ❌ | ❌ | ❌ | ❌ |
- ByteBuffer navigation constraints
- JetBrains method contracts
- Static analysis for nullity
- Static analysis for bounds
- Comprehensive exceptions (tell what and where was wrong)