Robert Landers
07842f4036
switch to cloxcache
...
Signed-off-by: Robert Landers <landers.robert@gmail.com >
2025-12-06 12:28:13 +01:00
Alexander Stecher
98573ed7c0
refactor: extract the state module and make the backoff error instead of panic
...
This PR:
- moves state.go to its own module
- moves the phpheaders test the phpheaders module
- simplifies backoff.go
- makes the backoff error instead of panic (so it can be tested)
- removes some unused C structs
2025-12-02 23:10:12 +01:00
Alexandre Daubois
1fbabf91c9
fix(extgen): use RETURN_EMPTY_STRING() when returning empty string ( #2049 )
...
One last bug spotted by #1984 , empty strings should be returned using
`RETURN_EMPTY_STRING()` or it may segfault.
2025-12-01 15:43:45 +01:00
Alexandre Daubois
2fa7663d3b
fix(extgen): use REGISTER(_NS)_BOOL_CONSTANT ( #2047 )
...
Spotted in #1984 , this is the right macros to declare boolean constants
2025-12-01 15:35:34 +01:00
Max
c9ad9fc55a
headerKeyCache: use otter v2 ( #2040 )
...
Benchmarks show that version 1, while extremely fast with hot keys,
becomes several times slower than no‑cache under frequent misses.
Version 2 delivers consistently better performance across all scenarios,
with no allocations and stable latency.
```
BenchmarkGetUnCommonHeaderNoCacheSequential-12 7545640 169.4 ns/op 72 B/op 4 allocs/op
BenchmarkGetUnCommonHeaderV2Sequential-12 14471982 85.98 ns/op 0 B/op 0 allocs/op
BenchmarkGetUnCommonHeaderV1Sequential-12 19748048 59.63 ns/op 0 B/op 0 allocs/op
BenchmarkGetUnCommonHeaderNoCacheParallelOneKey-12 24352088 44.47 ns/op 72 B/op 4 allocs/op
BenchmarkGetUnCommonHeaderV2ParallelOneKey-12 91024160 11.76 ns/op 0 B/op 0 allocs/op
BenchmarkGetUnCommonHeaderV1ParallelOneKey-12 192048842 6.186 ns/op 0 B/op 0 allocs/op
BenchmarkGetUnCommonHeaderNoCacheParallelRandomMaximumSize-12 26261611 43.07 ns/op 62 B/op 3 allocs/op
BenchmarkGetUnCommonHeaderV2ParallelRandomMaximumSize-12 100000000 14.43 ns/op 0 B/op 0 allocs/op
BenchmarkGetUnCommonHeaderV1ParallelRandomMaximumSize-12 137813384 8.965 ns/op 0 B/op 0 allocs/op
BenchmarkGetUnCommonHeaderNoCacheParallelRandomLenKeys-12 24224664 46.57 ns/op 71 B/op 3 allocs/op
BenchmarkGetUnCommonHeaderV2ParallelRandomLenKeys-12 69002575 17.42 ns/op 0 B/op 0 allocs/op
BenchmarkGetUnCommonHeaderV1ParallelRandomLenKeys-12 8498404 253.1 ns/op 42 B/op 1 allocs/op
```
---------
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
2025-12-01 11:37:40 +01:00
Kévin Dunglas
c93729e136
chore: use sync.WaitGroup.Go when possible ( #1996 )
...
* chore: use sync.WaitGroup.Go when possible
* Update internal/watcher/watcher.go
Co-authored-by: Alexandre Daubois <2144837+alexandre-daubois@users.noreply.github.com >
---------
Co-authored-by: Alexandre Daubois <2144837+alexandre-daubois@users.noreply.github.com >
2025-11-20 11:48:18 +01:00
Alexandre Daubois
bd943f49de
feat(extgen): print gen_stub.php in case of failure
2025-11-18 11:10:03 +01:00
Alexandre Daubois
8f298ab060
fix(extgen): constant should be declared under the namespace provided by export_php:namespace
2025-11-18 10:40:59 +01:00
Alexandre Daubois
eeb7d1a0c4
fix(extgen): only register ext_functions if functions are declared
2025-11-17 17:40:30 +01:00
Kévin Dunglas
8341cc98c6
refactor: rely on context.Context for log/slog and others ( #1969 )
...
* refactor: rely on context.Context for log/slog and others
* optimize
* refactor
* Apply suggestion from @Copilot
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
* fix watcher-skip
* better globals handling
* fix
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2025-11-17 16:32:23 +01:00
Alexandre Daubois
4e6d67e0b4
fix(extgen): don't remove everything in the build directory now that there's no build subdir
2025-11-14 15:13:54 +01:00
Alexandre Daubois
f7298557aa
feat(extgen): automatically add "runtime/cgo" to the imports if necessary
2025-11-14 15:12:28 +01:00
Alexandre Daubois
861b345b05
fix(extgen): replace any by interface{} in the generated go file when dealing with handles
2025-11-14 14:54:40 +01:00
Kévin Dunglas
b749f52ae5
chore: simplify string using backticks
...
# Conflicts:
# internal/extgen/classparser.go
# internal/extgen/gofile_test.go
2025-10-14 14:09:17 +02:00
Kévin Dunglas
5514491a18
feat(extgen): support for mixed type ( #1913 )
...
* feat(extgent): support for mixed type
* refactor: use unsafe.Pointer
* Revert "refactor: use unsafe.Pointer"
This reverts commit 8a0b9c1beb .
* fix docs
* fix docs
* cleanup template
* fix template
* fix tests
2025-10-09 14:10:45 +02:00
Alexander Stecher
952754db27
fix: don't flush env between requests ( #1814 )
2025-08-27 08:30:40 +02:00
Alexander Stecher
d540727369
feat:(extgen) make Go arrays more consistent with PHP arrays ( #1800 )
...
* Makes go arrays more consistent with PHP arrays.
* NewAssociativeArray.
* linting
* go linting
* Exposes all primitive types.
* Removes pointer alias
* linting
* Optimizes hash update.
* Fixes extgen tests.
* Moves file to tests.
* Fixes suggested by @dunglas.
* Replaces 'interface{}' with 'any'.
* Panics on wrong zval.
* interface improvements as suggested by @dunglas.
* Adjusts docs.
* Adjusts docs.
* Removes PackedArray alias and adjusts docs.
* Updates docs.
2025-08-25 16:24:15 +02:00
Alexandre Daubois
4dd6b5ea16
fix: support filename other than ext.go and keep local vars on generation
2025-08-25 16:17:01 +02:00
Alexander Stecher
2b78ffe15c
tests: make caddy_tests faster ( #1823 )
2025-08-25 16:16:32 +02:00
Kévin Dunglas
a1ae2692e1
chore: modernize Go code
2025-08-15 00:22:44 +02:00
Kévin Dunglas
1da2ba1f28
fix(ci): Docker builds
2025-07-17 10:14:18 +02:00
Alexandre Daubois
34fbfd467b
chore(extgen): remove useless constructors
2025-07-16 12:06:23 +02:00
Alexandre Daubois
8df41236d9
feat(extgen): add support for arrays as parameters and return types ( #1724 )
...
* feat(extgen): add support for arrays as parameters and return types
* cs
---------
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
2025-07-16 12:05:29 +02:00
Alexandre Daubois
1804e36b93
feat(extgen): add support for //export_php:namespace ( #1721 )
2025-07-16 12:01:39 +02:00
Alexandre Daubois
6ce99f251a
chore(extgen): unexport more symbols ( #1719 )
2025-07-07 05:55:09 +02:00
Luffy
ac900e0df4
docs: update repository links and sync cn readme ( #1711 )
2025-07-01 10:29:55 +02:00
Alexandre Daubois
94ac4b4935
chore: use modern ZPP macros in the extension generator ( #1703 )
2025-06-30 14:50:36 +02:00
Alexandre Daubois
58fde42654
fix: improve generated C extension code ( #1698 )
2025-06-30 09:23:21 +02:00
Alexandre Daubois
30ef5f6657
chore: use filepath.Separator instead of hardcoded separator ( #1685 )
2025-06-27 14:36:31 +02:00
Alexandre Daubois
9e3b47c52f
fix(extgen): capitalize cgo handle function call ( #1696 )
2025-06-27 14:26:09 +02:00
Kévin Dunglas
abfd893d88
feat: FrankenPHP extensions ( #1651 )
...
* feat: add helpers to create PHP extensions (#1644 )
* feat: add helpers to create PHP extensions
* cs
* feat: GoString
* test
* add test for RegisterExtension
* cs
* optimize includes
* fix
* feat(extensions): add the PHP extension generator (#1649 )
* feat(extensions): add the PHP extension generator
* unexport many types
* unexport more symbols
* cleanup some tests
* unexport more symbols
* fix
* revert types files
* revert
* add better validation and fix templates
* remove GoStringCopy
* small fixes
---------
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
* try to fix tests
* fix CS
* try some workarounds
* try some workarounds
* ingore TestRegisterExtension
* exclude cgo tests in Docker images
* fix
* workaround...
* race detector
* simplify tests and code
* make linter happy
* feat(gofile): use templates to generate the Go file (#1666 )
---------
Co-authored-by: Alexandre Daubois <2144837+alexandre-daubois@users.noreply.github.com >
2025-06-25 10:18:22 +02:00
Max
71aebbe0e7
perf: add popular proxy headers ( #1661 )
...
* perf: add popular proxy headers
* X-Real-IP => X-Real-Ip
2025-06-19 14:05:26 +02:00
Alexander Stecher
3741782330
feat: '-r' option for php-cli ( #1482 )
2025-05-01 02:06:31 +02:00
Kévin Dunglas
8583afd83e
chore: add context to logs to make the linter happy ( #1533 )
2025-04-29 01:08:15 +02:00
Indra Gunawan
1ec37f6cc9
feat: replace zap with slog ( #1527 )
2025-04-26 11:04:46 +02:00
Kévin Dunglas
8092f4a35c
chore!: update to golangci-lint-action 7 ( #1508 )
2025-04-17 20:33:22 +02:00
Alexander Stecher
93266dfcad
feat(watcher): log last changed file ( #1447 )
...
* logs last changed file.
* Fixes race condition.
---------
Co-authored-by: Alliballibaba <alliballibaba@gmail.com >
2025-03-19 13:10:02 +01:00
Alliballibaba2
072151dfee
feat: Adds automatic thread scaling at runtime and php_ini configuration in Caddyfile ( #1266 )
...
Adds option to scale threads at runtime
Adds php_ini configuration in Caddyfile
2025-02-19 20:39:33 +01:00
Alexander Stecher
9f5e7a9eaa
fix(watcher): handles associated events ( #1379 )
...
* Handles associated events.
* triggers pipeline
* Adjusts comment.
* Uses fixed version.
* Update watch_pattern_test.go
---------
Co-authored-by: Alliballibaba <alliballibaba@gmail.com >
Co-authored-by: Kévin Dunglas <kevin@dunglas.fr >
2025-02-17 23:47:27 +01:00
Indra Gunawan
233753ca6b
docs: update docs for first-time contributor ( #1368 )
2025-02-17 10:31:33 +01:00
Alexander Stecher
dd250e3bda
perf: optimized request headers ( #1335 )
...
* Optimizes header registration.
* Adds malformed cookie tests.
* Sets key to NULL (releasing them is unnecessary)
* Adjusts test.
* Sanitizes null bytes anyways.
* Sorts headers.
* trigger
* clang-format
* More clang-format.
* Updates headers and tests.
* Adds header test.
* Adds more headers.
* Updates headers again.
* ?Removes comments.
* ?Reformats headers
* ?Reformats headers
* renames header files.
* ?Renames test.
* ?Fixes assertion.
* test
* test
* test
* Moves headers test to main package.
* Properly capitalizes headers.
* Allows and tests multiple cookie headers.
* Fixes comment.
* Adds otter back in.
* Verifies correct capitalization.
* Resets package version.
* Removes debug log.
* Makes persistent strings also interned and saves them once on the main thread.
---------
Co-authored-by: Alliballibaba <alliballibaba@gmail.com >
2025-01-27 21:48:20 +01:00
Kévin Dunglas
0328d0600e
fix: missing build tag for fastabs
2024-11-13 20:08:42 +01:00
Kévin Dunglas
843d199469
perf: cache computations in WithRequestDocumentRoot ( #1154 )
2024-11-13 07:10:53 +01:00
Alexander Stecher
56d5d50ea9
fix: watcher pattern matching and retrying ( #1143 )
...
Co-authored-by: Alliballibaba <alliballibaba@gmail.com >
2024-11-10 15:48:47 +01:00
Kévin Dunglas
69c43ee43d
chore: use upstream e-dant/watcher headers and build system ( #1119 )
2024-10-31 09:39:51 +01:00
Kévin Dunglas
afedeb9d58
refactor: use build tags to disable, instead of to enable a feature ( #1113 )
2024-10-24 14:14:47 +02:00
Kévin Dunglas
d53f909d20
chore: various cleanups
2024-10-23 22:33:58 +02:00
Kévin Dunglas
e9c075a4a5
feat: add build tag to skip Watcher support ( #1076 )
...
* feat: add build tag to skip Watcher support
* fix
* fix
* cleanup
2024-10-08 23:23:53 +02:00
Kévin Dunglas
56d2f99548
chore: make the watcher module internal
2024-10-07 15:37:40 +02:00
Kévin Dunglas
aa1d968dcf
refactor: faster $_SERVER variables creation
2023-11-16 14:40:52 +01:00