Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
995c92f
squash module skeleton + basic CI
Jan 17, 2026
79bd6b3
[v4] More CI (#46)
ConorWilliams Jan 21, 2026
2cbdbb5
[V4] Benchmark skeleton (#48)
ConorWilliams Jan 24, 2026
1e44af0
[v4] Agents (#52)
ConorWilliams Jan 24, 2026
91e14c5
[V4] Sketch of promise structure (#53)
ConorWilliams Jan 26, 2026
6b7abcf
[V4] Baremetal (#54)
ConorWilliams Jan 29, 2026
718ac93
[V4] Tuple and captured transform (#55)
ConorWilliams Feb 1, 2026
6e127a8
[V4] Fork infrastructure (#56)
ConorWilliams Feb 4, 2026
25165b7
[V4] Half thread-local storage (#59)
ConorWilliams Feb 10, 2026
78f58c6
[V4] Join (#60)
ConorWilliams Feb 12, 2026
16431b0
[V4] Queue (#64)
ConorWilliams Feb 13, 2026
9f23b15
[V4] Exceptions (#65)
ConorWilliams Feb 16, 2026
25d3d3f
[V4] Schedule and work handles (#66)
ConorWilliams Mar 22, 2026
10e82b8
[V4] Generic over context (#68)
ConorWilliams Mar 27, 2026
f293d24
[V4] Dot script (#70)
ConorWilliams Mar 28, 2026
165a986
[V4] Geometric stack (#71)
ConorWilliams Mar 29, 2026
24f9365
[V4] Final suspend optimisations (#73)
ConorWilliams Mar 29, 2026
21b8886
[V4] Fixed capacity deque (#74)
ConorWilliams Mar 30, 2026
dae2081
[V4] Tidy promise (#76)
ConorWilliams Mar 30, 2026
3939e6a
[V4] Null checkpoints (#75)
ConorWilliams Mar 31, 2026
d4e787f
[V4] Restore (optional) task context (#78)
ConorWilliams Apr 1, 2026
fd43e23
[V4] Concept tests (#79)
ConorWilliams Apr 2, 2026
c37ce23
[V4] Allocator aware stacks (#80)
ConorWilliams Apr 3, 2026
b78de71
[V4] less templates (#81)
ConorWilliams Apr 3, 2026
0a075c4
[V4] Handle base (#83)
ConorWilliams Apr 4, 2026
edebf31
[V4] Scheduling split 1/n (#82)
ConorWilliams Apr 4, 2026
bb1dc6e
[V4] Schedule split 2/n (#84)
ConorWilliams Apr 4, 2026
fd609eb
[V4] Scheduler split 3/n (#86)
ConorWilliams Apr 5, 2026
7856fed
[V4] Scheduler split 4/4 (#87)
ConorWilliams Apr 5, 2026
4c52e08
[V4] Refactor modules (#88)
ConorWilliams Apr 6, 2026
fe1130b
[V4] No allocation for exceptions (#89)
ConorWilliams Apr 6, 2026
f6c07c5
[V4] Adaptor stack (#90)
ConorWilliams Apr 6, 2026
c02b337
[V4] Schedule test exceptions (#92)
ConorWilliams Apr 6, 2026
40d22b2
[V4] Busy pool (dev version) (#91)
ConorWilliams Apr 9, 2026
c0403af
[V4] UTS port (#93)
ConorWilliams Apr 9, 2026
74b7eaf
[V4] Cancellation 2.0 (#72)
ConorWilliams Apr 19, 2026
56eec7d
[V4] Schedule 2 (#95)
ConorWilliams Apr 20, 2026
387d763
[V4] Allocator aware deque (#96)
ConorWilliams Apr 20, 2026
a8d94b1
[V4] Slab stack No.2 (#94)
ConorWilliams Apr 22, 2026
143ba78
[V4] Benchmark re-work (#97)
ConorWilliams Apr 24, 2026
efb7468
[V4] No template-template (#99)
ConorWilliams Apr 24, 2026
31ddb63
[V4] Allocator aware adaptors (#100)
ConorWilliams Apr 25, 2026
de98dc4
[V4] Public-private split (#101)
ConorWilliams Apr 25, 2026
34c14b5
[V4] Small object optimizations (#102)
ConorWilliams Apr 25, 2026
586bd4c
[V4] Split `promise.cxx` (#103)
ConorWilliams Apr 26, 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
34 changes: 25 additions & 9 deletions .clang-format
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,35 @@
Language: Cpp
ColumnLimit: 110
IndentPPDirectives: BeforeHash
AlwaysBreakTemplateDeclarations : true
PackConstructorInitializers : CurrentLine
AlwaysBreakTemplateDeclarations: Yes
BreakAfterAttributes: Always
PackConstructorInitializers: Never
AccessModifierOffset: -1
IndentCaseLabels : true
IndentCaseLabels: true
AllowShortLambdasOnASingleLine: Empty
RequiresExpressionIndentation: OuterScope
BinPackArguments : false
BinPackParameters : false
LambdaBodyIndentation : Signature
PenaltyReturnTypeOnItsOwnLine : 1
LambdaBodyIndentation: Signature
PenaltyReturnTypeOnItsOwnLine: 1

# TODO: update for clang-format 23
BinPackArguments: false
BinPackParameters: OnePerLine

BreakBeforeConceptDeclarations: Always

Macros:
- LF_TRY=if
- LF_CATCH_ALL=else
- LF_CATCH(x)=else
- LF_HOF(x)={x;}
- LF_HOF(x,y)={x,y;}
- LF_HOF(x,y,z)={x,y,z;}
- LF_HOF(x,y,z,w)={x,y,z,w;}
- LF_HOF(a,b,c,d,e)={a;}
- LF_HOF(a,b,c,d,e,f)={a,b,c,d,e,f;}

SpaceBeforeParens: Custom
SpaceBeforeParensOptions:
AfterRequiresInClause: true
AfterRequiresInExpression : true
AfterRequiresInClause: true
AfterRequiresInExpression: true
...
284 changes: 143 additions & 141 deletions .clang-tidy
Original file line number Diff line number Diff line change
Expand Up @@ -10,148 +10,150 @@ Checks: "*,\
-llvm-header-guard,\
-llvm-include-order,\
-llvmlibc-*,\
-modernize-use-nodiscard,\
-readability-identifier-length,\
-misc-non-private-member-variables-in-classes"
WarningsAsErrors: ''
WarningsAsErrors: ""
CheckOptions:
- key: readability-function-cognitive-complexity.IgnoreMacros
value: 'true'
- key: 'bugprone-argument-comment.StrictMode'
value: 'true'
# Prefer using enum classes with 2 values for parameters instead of bools
- key: 'bugprone-argument-comment.CommentBoolLiterals'
value: 'true'
- key: 'bugprone-misplaced-widening-cast.CheckImplicitCasts'
value: 'true'
- key: 'bugprone-sizeof-expression.WarnOnSizeOfIntegerExpression'
value: 'true'
- key: 'bugprone-suspicious-string-compare.WarnOnLogicalNotComparison'
value: 'true'
- key: 'readability-simplify-boolean-expr.ChainedConditionalReturn'
value: 'true'
- key: 'readability-simplify-boolean-expr.ChainedConditionalAssignment'
value: 'true'
- key: 'readability-uniqueptr-delete-release.PreferResetCall'
value: 'true'
- key: 'cppcoreguidelines-init-variables.MathHeader'
value: '<cmath>'
- key: 'cppcoreguidelines-narrowing-conversions.PedanticMode'
value: 'true'
- key: 'readability-else-after-return.WarnOnUnfixable'
value: 'true'
- key: 'readability-else-after-return.WarnOnConditionVariables'
value: 'true'
- key: 'readability-inconsistent-declaration-parameter-name.Strict'
value: 'true'
- key: 'readability-qualified-auto.AddConstToQualified'
value: 'true'
- key: 'readability-redundant-access-specifiers.CheckFirstDeclaration'
value: 'true'
# These seem to be the most common identifier styles
- key: 'readability-identifier-naming.AbstractClassCase'
value: 'lower_case'
- key: 'readability-identifier-naming.ClassCase'
value: 'lower_case'
- key: 'readability-identifier-naming.ClassConstantCase'
value: 'lower_case'
- key: 'readability-identifier-naming.ClassMemberCase'
value: 'lower_case'
- key: 'readability-identifier-naming.ClassMethodCase'
value: 'lower_case'
- key: 'readability-identifier-naming.ConstantCase'
value: 'lower_case'
- key: 'readability-identifier-naming.ConstantMemberCase'
value: 'lower_case'
- key: 'readability-identifier-naming.ConstantParameterCase'
value: 'lower_case'
- key: 'readability-identifier-naming.ConstantPointerParameterCase'
value: 'lower_case'
- key: 'readability-identifier-naming.ConstexprFunctionCase'
value: 'lower_case'
- key: 'readability-identifier-naming.ConstexprMethodCase'
value: 'lower_case'
- key: 'readability-identifier-naming.ConstexprVariableCase'
value: 'lower_case'
- key: 'readability-identifier-naming.EnumCase'
value: 'lower_case'
- key: 'readability-identifier-naming.EnumConstantCase'
value: 'lower_case'
- key: 'readability-identifier-naming.FunctionCase'
value: 'lower_case'
- key: 'readability-identifier-naming.GlobalConstantCase'
value: 'lower_case'
- key: 'readability-identifier-naming.GlobalConstantPointerCase'
value: 'lower_case'
- key: 'readability-identifier-naming.GlobalFunctionCase'
value: 'lower_case'
- key: 'readability-identifier-naming.GlobalPointerCase'
value: 'lower_case'
- key: 'readability-identifier-naming.GlobalVariableCase'
value: 'lower_case'
- key: 'readability-identifier-naming.InlineNamespaceCase'
value: 'lower_case'
- key: 'readability-identifier-naming.LocalConstantCase'
value: 'lower_case'
- key: 'readability-identifier-naming.LocalConstantPointerCase'
value: 'lower_case'
- key: 'readability-identifier-naming.LocalPointerCase'
value: 'lower_case'
- key: 'readability-identifier-naming.LocalVariableCase'
value: 'lower_case'
- key: 'readability-identifier-naming.MacroDefinitionCase'
value: 'UPPER_CASE'
- key: 'readability-identifier-naming.MemberCase'
value: 'lower_case'
- key: 'readability-identifier-naming.MethodCase'
value: 'lower_case'
- key: 'readability-identifier-naming.NamespaceCase'
value: 'lower_case'
- key: 'readability-identifier-naming.ParameterCase'
value: 'lower_case'
- key: 'readability-identifier-naming.ParameterPackCase'
value: 'lower_case'
- key: 'readability-identifier-naming.PointerParameterCase'
value: 'lower_case'
- key: 'readability-identifier-naming.PrivateMemberCase'
value: 'lower_case'
- key: 'readability-identifier-naming.PrivateMemberPrefix'
value: 'm_'
- key: 'readability-identifier-naming.PrivateMethodCase'
value: 'lower_case'
- key: 'readability-identifier-naming.ProtectedMemberCase'
value: 'lower_case'
- key: 'readability-identifier-naming.ProtectedMemberPrefix'
value: 'm_'
- key: 'readability-identifier-naming.ProtectedMethodCase'
value: 'lower_case'
- key: 'readability-identifier-naming.PublicMemberCase'
value: 'lower_case'
- key: 'readability-identifier-naming.PublicMethodCase'
value: 'lower_case'
- key: 'readability-identifier-naming.ScopedEnumConstantCase'
value: 'lower_case'
- key: 'readability-identifier-naming.StaticConstantCase'
value: 'lower_case'
- key: 'readability-identifier-naming.StaticVariableCase'
value: 'lower_case'
- key: 'readability-identifier-naming.StructCase'
value: 'lower_case'
- key: 'readability-identifier-naming.TemplateParameterCase'
value: 'CamelCase'
- key: 'readability-identifier-naming.TemplateTemplateParameterCase'
value: 'CamelCase'
- key: 'readability-identifier-naming.TypeAliasCase'
value: 'lower_case'
- key: 'readability-identifier-naming.TypedefCase'
value: 'lower_case'
- key: 'readability-identifier-naming.TypeTemplateParameterCase'
value: 'CamelCase'
- key: 'readability-identifier-naming.UnionCase'
value: 'lower_case'
- key: 'readability-identifier-naming.ValueTemplateParameterCase'
value: 'CamelCase'
- key: 'readability-identifier-naming.VariableCase'
value: 'lower_case'
- key: 'readability-identifier-naming.VirtualMethodCase'
value: 'lower_case'
value: "true"
- key: "cppcoreguidelines-avoid-do-while.IgnoreMacros"
value: "true"
- key: "bugprone-argument-comment.StrictMode"
value: "true"
# Prefer using enum classes with 2 values for parameters instead of bools
- key: "bugprone-argument-comment.CommentBoolLiterals"
value: "true"
- key: "bugprone-misplaced-widening-cast.CheckImplicitCasts"
value: "true"
- key: "bugprone-sizeof-expression.WarnOnSizeOfIntegerExpression"
value: "true"
- key: "bugprone-suspicious-string-compare.WarnOnLogicalNotComparison"
value: "true"
- key: "readability-simplify-boolean-expr.ChainedConditionalReturn"
value: "true"
- key: "readability-simplify-boolean-expr.ChainedConditionalAssignment"
value: "true"
- key: "readability-uniqueptr-delete-release.PreferResetCall"
value: "true"
- key: "cppcoreguidelines-init-variables.MathHeader"
value: "<cmath>"
- key: "cppcoreguidelines-narrowing-conversions.PedanticMode"
value: "true"
- key: "readability-else-after-return.WarnOnUnfixable"
value: "true"
- key: "readability-else-after-return.WarnOnConditionVariables"
value: "true"
- key: "readability-inconsistent-declaration-parameter-name.Strict"
value: "true"
- key: "readability-qualified-auto.AddConstToQualified"
value: "true"
- key: "readability-redundant-access-specifiers.CheckFirstDeclaration"
value: "true"
# These seem to be the most common identifier styles
- key: "readability-identifier-naming.AbstractClassCase"
value: "lower_case"
- key: "readability-identifier-naming.ClassCase"
value: "lower_case"
- key: "readability-identifier-naming.ClassConstantCase"
value: "lower_case"
- key: "readability-identifier-naming.ClassMemberCase"
value: "lower_case"
- key: "readability-identifier-naming.ClassMethodCase"
value: "lower_case"
- key: "readability-identifier-naming.ConstantCase"
value: "lower_case"
- key: "readability-identifier-naming.ConstantMemberCase"
value: "lower_case"
- key: "readability-identifier-naming.ConstantParameterCase"
value: "lower_case"
- key: "readability-identifier-naming.ConstantPointerParameterCase"
value: "lower_case"
- key: "readability-identifier-naming.ConstexprFunctionCase"
value: "lower_case"
- key: "readability-identifier-naming.ConstexprMethodCase"
value: "lower_case"
- key: "readability-identifier-naming.ConstexprVariableCase"
value: "lower_case"
- key: "readability-identifier-naming.EnumCase"
value: "lower_case"
- key: "readability-identifier-naming.EnumConstantCase"
value: "lower_case"
- key: "readability-identifier-naming.FunctionCase"
value: "lower_case"
- key: "readability-identifier-naming.GlobalConstantCase"
value: "lower_case"
- key: "readability-identifier-naming.GlobalConstantPointerCase"
value: "lower_case"
- key: "readability-identifier-naming.GlobalFunctionCase"
value: "lower_case"
- key: "readability-identifier-naming.GlobalPointerCase"
value: "lower_case"
- key: "readability-identifier-naming.GlobalVariableCase"
value: "lower_case"
- key: "readability-identifier-naming.InlineNamespaceCase"
value: "lower_case"
- key: "readability-identifier-naming.LocalConstantCase"
value: "lower_case"
- key: "readability-identifier-naming.LocalConstantPointerCase"
value: "lower_case"
- key: "readability-identifier-naming.LocalPointerCase"
value: "lower_case"
- key: "readability-identifier-naming.LocalVariableCase"
value: "lower_case"
- key: "readability-identifier-naming.MacroDefinitionCase"
value: "UPPER_CASE"
- key: "readability-identifier-naming.MemberCase"
value: "lower_case"
- key: "readability-identifier-naming.MethodCase"
value: "lower_case"
- key: "readability-identifier-naming.NamespaceCase"
value: "lower_case"
- key: "readability-identifier-naming.ParameterCase"
value: "lower_case"
- key: "readability-identifier-naming.ParameterPackCase"
value: "lower_case"
- key: "readability-identifier-naming.PointerParameterCase"
value: "lower_case"
- key: "readability-identifier-naming.PrivateMemberCase"
value: "lower_case"
- key: "readability-identifier-naming.PrivateMemberPrefix"
value: "m_"
- key: "readability-identifier-naming.PrivateMethodCase"
value: "lower_case"
- key: "readability-identifier-naming.ProtectedMemberCase"
value: "lower_case"
- key: "readability-identifier-naming.ProtectedMemberPrefix"
value: "m_"
- key: "readability-identifier-naming.ProtectedMethodCase"
value: "lower_case"
- key: "readability-identifier-naming.PublicMemberCase"
value: "lower_case"
- key: "readability-identifier-naming.PublicMethodCase"
value: "lower_case"
- key: "readability-identifier-naming.ScopedEnumConstantCase"
value: "lower_case"
- key: "readability-identifier-naming.StaticConstantCase"
value: "lower_case"
- key: "readability-identifier-naming.StaticVariableCase"
value: "lower_case"
- key: "readability-identifier-naming.StructCase"
value: "lower_case"
- key: "readability-identifier-naming.TemplateParameterCase"
value: "CamelCase"
- key: "readability-identifier-naming.TemplateTemplateParameterCase"
value: "CamelCase"
- key: "readability-identifier-naming.TypeAliasCase"
value: "lower_case"
- key: "readability-identifier-naming.TypedefCase"
value: "lower_case"
- key: "readability-identifier-naming.TypeTemplateParameterCase"
value: "CamelCase"
- key: "readability-identifier-naming.UnionCase"
value: "lower_case"
- key: "readability-identifier-naming.ValueTemplateParameterCase"
value: "CamelCase"
- key: "readability-identifier-naming.VariableCase"
value: "lower_case"
- key: "readability-identifier-naming.VirtualMethodCase"
value: "lower_case"
...
2 changes: 1 addition & 1 deletion .clangd
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
CompileFlags:
CompilationDatabase: build/dev
CompilationDatabase: build/dev
4 changes: 2 additions & 2 deletions .codespellrc
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[codespell]
builtin = clear,rare,en-GB_to_en-US,names,informal,code
builtin = clear,rare,names,informal,code
check-filenames =
check-hidden =
ignore-words-list = deque,warmup,stdio,copyable,combinate
skip = */.git,*/build,*/prefix,*/vcpkg,*/_build,*/bench
skip = */.git,*/build,*/.legacy
quiet-level = 2
8 changes: 8 additions & 0 deletions .gemini/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"context": {
"fileName": "AGENTS.md"
},
"ui": {
"hideBanner": true
}
}
33 changes: 33 additions & 0 deletions .github/workflows/linear.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: Linear History

on:
pull_request:
branches: ["modules"]
workflow_dispatch:

jobs:
check-linear-history:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
with:
ref: ${{ github.event.pull_request.head.sha || github.sha }}
fetch-depth: 0

- name: Check for merge commits
run: |
BASE_REF=${{ github.base_ref || 'modules' }}
echo "Comparing against base: $BASE_REF"
git fetch origin $BASE_REF:$BASE_REF
MERGE_COMMITS=$(git rev-list --merges $BASE_REF..HEAD)
if [ -n "$MERGE_COMMITS" ]; then
echo "Error: Merge commits detected. libfork requires a linear history."
echo "Please rebase your branch onto $BASE_REF to remove merge commits."
echo ""
echo "Merge commits found:"
git log --merges --oneline $BASE_REF..HEAD
exit 1
else
echo "No merge commits detected. Linear history check passed."
fi
Loading
Loading