Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
bcb95b0
Add basic ARM64 architecture support for NEON, SVE, and SVE2. Just a …
woobble May 19, 2026
22f1562
Refactor AVX512 compression and decompression headers: improve includ…
woobble May 19, 2026
37b3a72
Replace SIMDe submodule with FetchContent for streamlined dependency …
woobble May 19, 2026
11779ea
Integrate `CONFIGURE_DEPENDS` in source file globbing, improve CMake …
woobble May 19, 2026
17807c8
Refactor inline attributes in AVX512 compression and decompression he…
woobble May 19, 2026
552cea3
Refactor ARM64 NEON and SVE compression/decompression headers: organi…
woobble May 19, 2026
2355301
WIP: Implement NEON decompression functions with common utilities and…
woobble May 19, 2026
50d14a6
WIP: implement NEON decompression functions
woobble May 25, 2026
9eca704
WIP: implement NEON decompression functions
woobble May 25, 2026
af90ba8
WIP: Implement SVE2 decompression functions and update related header…
woobble May 28, 2026
0f0c178
WIP: Implement SVE2 decompression functions
woobble May 28, 2026
95c6475
WIP: Extend SVE2 decompression functions
woobble May 28, 2026
5523a3d
feat: add runtime backend dispatch with configurable block sizes
woobble Jun 13, 2026
8ad45ac
replace number types with pre defined types
woobble Jun 15, 2026
bdf3168
refactor: rename internal headers and add fallback compression/decomp…
woobble Jun 27, 2026
88ce357
refactor: clean up code formatting and improve consistency across hea…
woobble Jun 27, 2026
bd12a92
WIP
woobble Jul 8, 2026
f8ca1a0
feat: enhance Fortran bindings with new compression and decompression…
woobble Jul 8, 2026
9d373b1
feat: add roundtrip examples in C, C++, and Fortran for compression a…
woobble Jul 8, 2026
9169a93
feat: add CPU feature detection and caching for ARM and x86 architect…
woobble Jul 8, 2026
7341844
feat: add fallback packing function for AVX2 and enhance unpacking logic
woobble Jul 8, 2026
5c42e8d
feat: introduce clearer scale helper functions for compression and de…
woobble Jul 8, 2026
527666d
feat: refactor packing and unpacking functions to use std::span and i…
woobble Jul 8, 2026
13c6a31
feat: enhance CMake configuration for fallback stdpar and install con…
woobble Jul 8, 2026
de84152
docs: update README and examples for clarity and consistency in API u…
woobble Jul 8, 2026
05c0119
feat: add C API validation and consumer test executables for pernix
woobble Jul 9, 2026
2045935
feat: add AddressSanitizer and UndefinedBehaviorSanitizer options to …
woobble Jul 9, 2026
917d430
feat: update CI configuration to include main and release branches fo…
woobble Jul 9, 2026
ad14682
feat: update CI configuration for arm64 support and upgrade cache act…
woobble Jul 9, 2026
b90848e
feat: update CI configuration and improve error handling in fallback …
woobble Jul 9, 2026
63ffb3e
feat: refactor fallback compression and decompression functions for i…
woobble Jul 9, 2026
fe14648
style: apply consistent formatting and spacing across header files an…
woobble Jul 9, 2026
475d8f4
feat: enhance stdpar fallback backend with improved compression and d…
woobble Jul 9, 2026
a4f0a5d
feat: rename tolerance function and enhance tolerance calculation for…
woobble Jul 9, 2026
d62a5cd
feat: update CMake configuration to enable experimental C++26 std::si…
woobble Jul 10, 2026
359df15
feat: add unpacking tables and extend functionality for AVX512 and AV…
woobble Jul 16, 2026
deafde6
feat: introduce AVX2 tail mask functions and optimize packing/unpacki…
woobble Jul 16, 2026
6b28a0f
feat: implement packing tables and routines for AVX512 and AVX2 with …
woobble Jul 16, 2026
ffba312
refactor: remove reference qualifiers from function parameters for im…
woobble Jul 16, 2026
4b81622
feat: update clang format and tidy configurations for improved code s…
woobble Jul 16, 2026
10fd092
refactor: reorganize include directives for improved clarity and cons…
woobble Jul 16, 2026
a126237
feat: add low_bit_mask function and validation tests for packing/unpa…
woobble Jul 16, 2026
2bb9542
refactor: update type definitions to use std:: types for consistency …
woobble Jul 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
126 changes: 121 additions & 5 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -1,11 +1,127 @@
---
Language: Cpp
BasedOnStyle: Google

AccessModifierOffset: -4
AlignConsecutiveAssignments: true
AllowShortFunctionsOnASingleLine: InlineOnly
# General layout
ColumnLimit: 140
IndentWidth: 4
ContinuationIndentWidth: 4
TabWidth: 4
UseTab: Never

# Braces and compact constructs
BreakBeforeBraces: Attach
AllowShortBlocksOnASingleLine: Empty
AllowShortCaseExpressionOnASingleLine: true
AllowShortEnumsOnASingleLine: false
AllowShortFunctionsOnASingleLine: InlineOnly
AllowShortIfStatementsOnASingleLine: Never
AllowShortLoopsOnASingleLine: false
AllowShortLambdasOnASingleLine: Inline

# Alignment
AlignAfterOpenBracket: true
AlignArrayOfStructures: Left
AlignConsecutiveAssignments:
Enabled: true
AcrossEmptyLines: false
AcrossComments: false
AlignCompound: false
PadOperators: true
AlignConsecutiveBitFields:
Enabled: false
AlignConsecutiveDeclarations:
Enabled: false
AlignConsecutiveMacros:
Enabled: false
AlignOperands: Align
AlignTrailingComments:
Kind: Always
OverEmptyLines: 0

# Pointers and references
DerivePointerAlignment: false
PointerAlignment: Left
ReferenceAlignment: Pointer

# Function declarations and calls
BinPackArguments: true
BinPackParameters: BinPack
AllowAllArgumentsOnNextLine: true
AllowAllParametersOfDeclarationOnNextLine: true
PenaltyBreakBeforeFirstCallParameter: 19

# Templates
AlwaysBreakTemplateDeclarations: MultiLine
BreakTemplateDeclarations: Yes

# Constructor initializers
BreakConstructorInitializers: BeforeColon
ConstructorInitializerIndentWidth: 4
PackConstructorInitializers: BinPack

# Operators and expressions
BreakBeforeBinaryOperators: None
BreakBeforeTernaryOperators: true
BreakStringLiterals: true
SpaceAfterCStyleCast: false
SpaceBeforeAssignmentOperators: true
SpaceBeforeParens: ControlStatements
SpacesInAngles: Never
SpacesInCStyleCastParentheses: false
SpacesInParentheses: false
SpacesInSquareBrackets: false

# Includes
SortIncludes: CaseSensitive
IncludeBlocks: Regroup
IncludeCategories:
- Regex: '^<pernix/'
Priority: 1
SortPriority: 1

- Regex: '^<[^/]+>'
Priority: 2
SortPriority: 2

- Regex: '^<'
Priority: 3
SortPriority: 3

- Regex: '^"'
Priority: 4
SortPriority: 4


# Namespaces
NamespaceIndentation: None
FixNamespaceComments: true
IndentWidth: 4
PointerAlignment: Left
CompactNamespaces: false
ShortNamespaceLines: 1

# Access modifiers
AccessModifierOffset: -4
EmptyLineBeforeAccessModifier: LogicalBlock
EmptyLineAfterAccessModifier: Never

# Preprocessor
IndentPPDirectives: None
PPIndentWidth: 4
IndentCaseLabels: true
IndentCaseBlocks: false

# Comments
ReflowComments: Always
SpacesBeforeTrailingComments: 2

# Miscellaneous
InsertBraces: false
InsertNewlineAtEOF: true
KeepEmptyLines:
AtEndOfFile: false
AtStartOfBlock: false
AtStartOfFile: false
MaxEmptyLinesToKeep: 1
SeparateDefinitionBlocks: Always
RequiresClausePosition: OwnLine
RequiresExpressionIndentation: OuterScope
109 changes: 99 additions & 10 deletions .clang-tidy
Original file line number Diff line number Diff line change
@@ -1,13 +1,102 @@
---
Checks: >
bugprone-*
cppcoreguidelines-*
clang-analyzer-*
modernize-*
-*,
clang-analyzer-*,
bugprone-*,
performance-*,
portability-*,
misc-*,
modernize-*,
readability-*,
cppcoreguidelines-*,

-bugprone-easily-swappable-parameters,
-bugprone-narrowing-conversions,
-bugprone-signed-char-misuse,

-cppcoreguidelines-avoid-c-arrays,
-cppcoreguidelines-avoid-do-while,
-cppcoreguidelines-avoid-magic-numbers,
-cppcoreguidelines-avoid-non-const-global-variables,
-cppcoreguidelines-init-variables,
-cppcoreguidelines-macro-usage,
-cppcoreguidelines-non-private-member-variables-in-classes-owning-memory,
-cppcoreguidelines-pro-bounds-constant-array-index,
-cppcoreguidelines-pro-bounds-pointer-arithmetic,
-cppcoreguidelines-pro-type-cstyle-cast,
-cppcoreguidelines-pro-type-reinterpret-cast,
-cppcoreguidelines-pro-type-union-access,

-misc-include-cleaner,
-misc-no-recursion,

-modernize-avoid-c-arrays,
-modernize-concat-nested-namespaces,
-modernize-loop-convert,
-modernize-return-braced-init-list,
-modernize-use-auto,
-modernize-use-nodiscard,
-modernize-use-trailing-return-type,

-performance-avoid-endl,

-readability-avoid-const-params-in-decls,
-readability-braces-around-statements,
-readability-convert-member-functions-to-static,
-readability-else-after-return,
-readability-function-cognitive-complexity,
-readability-function-size,
-readability-identifier-length,
-readability-identifier-naming,
-readability-implicit-bool-conversion,
-readability-isolate-declaration,
-readability-magic-numbers,
-readability-make-member-function-const,
-readability-named-parameter,
-readability-redundant-access-specifiers,
-readability-static-accessed-through-instance

WarningsAsErrors: >
clang-analyzer-*,
bugprone-*,
performance-*
readability-*
misc-*
-modernize-use-trailing-return-type

WarningsAsErrors: 'bugprone-*,clang-analyzer-*'
HeaderFilterRegex: ''
FormatStyle: none
HeaderFilterRegex: '^(include|src|tests|benchmarks)/'
ExcludeHeaderFilterRegex: >
(^|/)(build|cmake-build-[^/]*|third_party|external|vendor|generated)/

SystemHeaders: false
FormatStyle: file
UseColor: true

CheckOptions:
# Suspiciously adjacent parameters are common in low-level SIMD helpers.
bugprone-easily-swappable-parameters.MinimumLength: 3
bugprone-easily-swappable-parameters.IgnoredParameterNames: '"",begin,end,first,last,lhs,rhs,x,y,z'

# Treat assertions as side-effecting expressions.
bugprone-assert-side-effect.AssertMacros: 'assert,PERNIX_ASSERT'

# Permit common test and benchmark patterns.
bugprone-unchecked-optional-access.CheckOsLinuxAndMac: true

# Do not rewrite auto when it improves readability or hides intrinsic types.
modernize-use-auto.MinTypeNameLength: 12
modernize-use-auto.RemoveStars: false

# Allow compact SIMD and mathematical variable names.
readability-identifier-length.MinimumVariableNameLength: 1
readability-identifier-length.MinimumParameterNameLength: 1
readability-identifier-length.IgnoredVariableNames: '^[ijknxyz]|lo|hi|src|dst|tmp|mask|count|scale$'
readability-identifier-length.IgnoredParameterNames: '^[ijknxyz]|lo|hi|src|dst|input|output|count|scale$'

# Keep function complexity checks informative if enabled manually.
readability-function-cognitive-complexity.Threshold: 40
readability-function-cognitive-complexity.DescribeBasicIncrements: true

# Ignore conventional bit-oriented numeric literals.
readability-magic-numbers.IgnoredIntegerValues: >
0;1;2;3;4;7;8;15;16;24;31;32;63;64;127;128;255;256;511;512
readability-magic-numbers.IgnorePowersOf2IntegerValues: true
readability-magic-numbers.IgnoreTypeAliases: true
readability-magic-numbers.IgnoreBitFieldsWidths: true
69 changes: 69 additions & 0 deletions .clangd
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
---
CompileFlags:
CompilationDatabase: build
Add:
- -Wall
- -Wextra
- -Wpedantic
- -Wconversion
- -Wsign-conversion
- -Wshadow
- -Wundef
- -Wdouble-promotion
- -Wformat=2
- -Wimplicit-fallthrough
- -Wmissing-declarations
- -Wmissing-prototypes
- -Wnon-virtual-dtor
- -Wold-style-cast
- -Woverloaded-virtual
- -Wzero-as-null-pointer-constant
Remove:
- -Werror
- -Wno-*

Diagnostics:
Suppress:
- pp_including_mainfile_in_preamble

ClangTidy:
Add:
- clang-analyzer-*
- bugprone-*
- performance-*
- portability-*

Remove:
- bugprone-easily-swappable-parameters
- bugprone-narrowing-conversions
- bugprone-signed-char-misuse

FastCheckFilter: Strict

UnusedIncludes: Strict
MissingIncludes: Strict

Index:
Background: Build
StandardLibrary: true

Completion:
AllScopes: true
ArgumentLists: FullPlaceholders
HeaderInsertion: IWYU
CodePatterns: All

Hover:
ShowAKA: true

InlayHints:
Enabled: true
ParameterNames: true
DeducedTypes: true
Designators: true
BlockEnd: false
TypeNameLimit: 32

SemanticTokens:
DisabledKinds: []
DisabledModifiers: []
Loading
Loading