summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--PHPINFO4
-rw-r--r--REFLECTION133
-rw-r--r--hdr_histogram-arginfo.patch1151
-rw-r--r--hdr_histogram-lib0114.patch323
-rw-r--r--php-pecl-hdr-histogram.spec64
5 files changed, 142 insertions, 1533 deletions
diff --git a/PHPINFO b/PHPINFO
index c775738..be13041 100644
--- a/PHPINFO
+++ b/PHPINFO
@@ -2,5 +2,5 @@
hdrhistogram
hdrhistogram support => enabled
-Extension version => 0.4.2
-Library version => 0.11.7
+Extension version => 0.5.0
+Library version => 0.11.8
diff --git a/REFLECTION b/REFLECTION
index 2f4224c..15efc03 100644
--- a/REFLECTION
+++ b/REFLECTION
@@ -1,4 +1,4 @@
-Extension [ <persistent> extension #75 hdrhistogram version 0.4.2 ] {
+Extension [ <persistent> extension #75 hdrhistogram version 0.5.0 ] {
- Functions {
Function [ <internal:hdrhistogram> function hdr_init ] {
@@ -8,18 +8,19 @@ Extension [ <persistent> extension #75 hdrhistogram version 0.4.2 ] {
Parameter #1 [ <required> int $highest_trackable_value ]
Parameter #2 [ <required> int $significant_figures ]
}
+ - Return [ HdrHistogram\Histogram|false ]
}
Function [ <internal:hdrhistogram> function hdr_get_memory_size ] {
- Parameters [1] {
- Parameter #0 [ <required> $hdr ]
+ Parameter #0 [ <required> HdrHistogram\Histogram $hdr ]
}
- Return [ int ]
}
Function [ <internal:hdrhistogram> function hdr_record_value ] {
- Parameters [2] {
- Parameter #0 [ <required> $hdr ]
+ Parameter #0 [ <required> HdrHistogram\Histogram $hdr ]
Parameter #1 [ <required> int $value ]
}
- Return [ bool ]
@@ -27,7 +28,7 @@ Extension [ <persistent> extension #75 hdrhistogram version 0.4.2 ] {
Function [ <internal:hdrhistogram> function hdr_record_values ] {
- Parameters [3] {
- Parameter #0 [ <required> $hdr ]
+ Parameter #0 [ <required> HdrHistogram\Histogram $hdr ]
Parameter #1 [ <required> int $value ]
Parameter #2 [ <required> int $count ]
}
@@ -36,58 +37,58 @@ Extension [ <persistent> extension #75 hdrhistogram version 0.4.2 ] {
Function [ <internal:hdrhistogram> function hdr_record_corrected_value ] {
- Parameters [3] {
- Parameter #0 [ <required> $hdr ]
+ Parameter #0 [ <required> HdrHistogram\Histogram $hdr ]
Parameter #1 [ <required> int $value ]
Parameter #2 [ <required> int $expected_interval ]
}
- - Return [ void ]
+ - Return [ bool ]
}
Function [ <internal:hdrhistogram> function hdr_mean ] {
- Parameters [1] {
- Parameter #0 [ <required> $hdr ]
+ Parameter #0 [ <required> HdrHistogram\Histogram $hdr ]
}
- - Return [ int ]
+ - Return [ float ]
}
Function [ <internal:hdrhistogram> function hdr_stddev ] {
- Parameters [1] {
- Parameter #0 [ <required> $hdr ]
+ Parameter #0 [ <required> HdrHistogram\Histogram $hdr ]
}
- Return [ float ]
}
Function [ <internal:hdrhistogram> function hdr_min ] {
- Parameters [1] {
- Parameter #0 [ <required> $hdr ]
+ Parameter #0 [ <required> HdrHistogram\Histogram $hdr ]
}
- Return [ int ]
}
Function [ <internal:hdrhistogram> function hdr_max ] {
- Parameters [1] {
- Parameter #0 [ <required> $hdr ]
+ Parameter #0 [ <required> HdrHistogram\Histogram $hdr ]
}
- Return [ int ]
}
Function [ <internal:hdrhistogram> function hdr_total_count ] {
- Parameters [1] {
- Parameter #0 [ <required> $hdr ]
+ Parameter #0 [ <required> HdrHistogram\Histogram $hdr ]
}
- Return [ int ]
}
Function [ <internal:hdrhistogram> function hdr_reset ] {
- Parameters [1] {
- Parameter #0 [ <required> $hdr ]
+ Parameter #0 [ <required> HdrHistogram\Histogram $hdr ]
}
- Return [ void ]
}
Function [ <internal:hdrhistogram> function hdr_count_at_value ] {
- Parameters [2] {
- Parameter #0 [ <required> $hdr ]
+ Parameter #0 [ <required> HdrHistogram\Histogram $hdr ]
Parameter #1 [ <required> int $value ]
}
- Return [ int ]
@@ -95,7 +96,7 @@ Extension [ <persistent> extension #75 hdrhistogram version 0.4.2 ] {
Function [ <internal:hdrhistogram> function hdr_value_at_percentile ] {
- Parameters [2] {
- Parameter #0 [ <required> $hdr ]
+ Parameter #0 [ <required> HdrHistogram\Histogram $hdr ]
Parameter #1 [ <required> float $percentile ]
}
- Return [ int ]
@@ -103,49 +104,52 @@ Extension [ <persistent> extension #75 hdrhistogram version 0.4.2 ] {
Function [ <internal:hdrhistogram> function hdr_add ] {
- Parameters [2] {
- Parameter #0 [ <required> $hdr1 ]
- Parameter #1 [ <required> $hdr2 ]
+ Parameter #0 [ <required> HdrHistogram\Histogram $hdr1 ]
+ Parameter #1 [ <required> HdrHistogram\Histogram $hdr2 ]
}
+ - Return [ HdrHistogram\Histogram|false ]
}
Function [ <internal:hdrhistogram> function hdr_merge_into ] {
- Parameters [2] {
- Parameter #0 [ <required> $hdr1 ]
- Parameter #1 [ <required> $hdr2 ]
+ Parameter #0 [ <required> HdrHistogram\Histogram $hdr1 ]
+ Parameter #1 [ <required> HdrHistogram\Histogram $hdr2 ]
}
- Return [ int ]
}
Function [ <internal:hdrhistogram> function hdr_iter_init ] {
- Parameters [1] {
- Parameter #0 [ <required> $hdr ]
+ Parameter #0 [ <required> HdrHistogram\Histogram $hdr ]
}
+ - Return [ HdrHistogram\Iterator|false ]
}
Function [ <internal:hdrhistogram> function hdr_iter_next ] {
- Parameters [1] {
- Parameter #0 [ <required> $hdr ]
+ Parameter #0 [ <required> HdrHistogram\Iterator $hdr ]
}
- Return [ array|false ]
}
Function [ <internal:hdrhistogram> function hdr_percentile_iter_init ] {
- Parameters [2] {
- Parameter #0 [ <required> $hdr ]
+ Parameter #0 [ <required> HdrHistogram\Histogram $hdr ]
Parameter #1 [ <required> int $ticks_per_half_distance ]
}
+ - Return [ HdrHistogram\Iterator\Percentile|false ]
}
Function [ <internal:hdrhistogram> function hdr_percentile_iter_next ] {
- Parameters [1] {
- Parameter #0 [ <required> $hdr ]
+ Parameter #0 [ <required> HdrHistogram\Iterator\Percentile $hdr ]
}
- Return [ array|false ]
}
Function [ <internal:hdrhistogram> function hdr_export ] {
- Parameters [1] {
- Parameter #0 [ <required> $hdr ]
+ Parameter #0 [ <required> HdrHistogram\Histogram $hdr ]
}
- Return [ array ]
}
@@ -154,11 +158,12 @@ Extension [ <persistent> extension #75 hdrhistogram version 0.4.2 ] {
- Parameters [1] {
Parameter #0 [ <required> array $import ]
}
+ - Return [ HdrHistogram\Histogram|false ]
}
Function [ <internal:hdrhistogram> function hdr_base64_encode ] {
- Parameters [1] {
- Parameter #0 [ <required> $hdr ]
+ Parameter #0 [ <required> HdrHistogram\Histogram $hdr ]
}
- Return [ string|false ]
}
@@ -167,6 +172,84 @@ Extension [ <persistent> extension #75 hdrhistogram version 0.4.2 ] {
- Parameters [1] {
Parameter #0 [ <required> string $data ]
}
+ - Return [ HdrHistogram\Histogram|false ]
+ }
+ }
+
+ - Classes [3] {
+ Class [ <internal:hdrhistogram> final class HdrHistogram\Histogram ] {
+
+ - Constants [0] {
+ }
+
+ - Static properties [0] {
+ }
+
+ - Static methods [0] {
+ }
+
+ - Properties [0] {
+ }
+
+ - Methods [1] {
+ Method [ <internal:hdrhistogram, ctor> public method __construct ] {
+
+ - Parameters [3] {
+ Parameter #0 [ <required> int $lowestDiscernibleValue ]
+ Parameter #1 [ <required> int $highestTrackableValue ]
+ Parameter #2 [ <required> int $significantFigures ]
+ }
+ }
+ }
+ }
+
+ Class [ <internal:hdrhistogram> final class HdrHistogram\Iterator ] {
+
+ - Constants [0] {
+ }
+
+ - Static properties [0] {
+ }
+
+ - Static methods [0] {
+ }
+
+ - Properties [0] {
+ }
+
+ - Methods [1] {
+ Method [ <internal:hdrhistogram, ctor> public method __construct ] {
+
+ - Parameters [1] {
+ Parameter #0 [ <required> HdrHistogram\Histogram $histogram ]
+ }
+ }
+ }
+ }
+
+ Class [ <internal:hdrhistogram> final class HdrHistogram\Iterator\Percentile ] {
+
+ - Constants [0] {
+ }
+
+ - Static properties [0] {
+ }
+
+ - Static methods [0] {
+ }
+
+ - Properties [0] {
+ }
+
+ - Methods [1] {
+ Method [ <internal:hdrhistogram, ctor> public method __construct ] {
+
+ - Parameters [2] {
+ Parameter #0 [ <required> HdrHistogram\Histogram $histogram ]
+ Parameter #1 [ <required> int $ticksPerHalfDistance ]
+ }
+ }
+ }
}
}
}
diff --git a/hdr_histogram-arginfo.patch b/hdr_histogram-arginfo.patch
deleted file mode 100644
index ac385fb..0000000
--- a/hdr_histogram-arginfo.patch
+++ /dev/null
@@ -1,1151 +0,0 @@
-From a7ae95182dea6dd7af6c6c571224c4db0b8c0c09 Mon Sep 17 00:00:00 2001
-From: Remi Collet <remi@remirepo.net>
-Date: Wed, 9 Dec 2020 14:59:44 +0100
-Subject: [PATCH] add all arginfo and fix PHP 8 compatibility
-
----
- hdrhistogram.c | 177 ++++++++++++++-----------------
- hdrhistogram.stub.php | 127 ++++++++++++++++++++++
- hdrhistogram_arginfo.h | 149 ++++++++++++++++++++++++++
- hdrhistogram_legacy_arginfo.h | 131 +++++++++++++++++++++++
- package.xml | 6 ++
- tests/hdrhistogram_009.phpt | 4 +
- tests/hdrhistogram_009_php8.phpt | 99 +++++++++++++++++
- tests/hdrhistogram_012.phpt | 4 +
- tests/hdrhistogram_012_php8.phpt | 40 +++++++
- 9 files changed, 638 insertions(+), 99 deletions(-)
- create mode 100644 hdrhistogram.stub.php
- create mode 100644 hdrhistogram_arginfo.h
- create mode 100644 hdrhistogram_legacy_arginfo.h
- create mode 100644 tests/hdrhistogram_009_php8.phpt
- create mode 100644 tests/hdrhistogram_012_php8.phpt
-
-diff --git a/hdrhistogram.c b/hdrhistogram.c
-index a411108..ee7545d 100644
---- a/hdrhistogram.c
-+++ b/hdrhistogram.c
-@@ -7,6 +7,12 @@
- #include "hdr/hdr_histogram_log.h"
- #include "php_hdrhistogram.h"
-
-+#if PHP_VERSION_ID < 80000
-+#include "hdrhistogram_legacy_arginfo.h"
-+#else
-+#include "hdrhistogram_arginfo.h"
-+#endif
-+
- #define PHP_HDRHISTOGRAM_DESCRIPTOR_RES_NAME "hdr_histogram"
-
- static int le_hdrhistogram_descriptor;
-@@ -14,24 +20,24 @@ static int le_hdrhistogram_iter_descriptor;
-
- #define strsize_t size_t
-
--static zend_always_inline void hdr_register_hdr_resource(zval *return_value, struct hdr_histogram* hdr TSRMLS_DC)
-+static zend_always_inline void hdr_register_hdr_resource(zval *return_value, struct hdr_histogram* hdr)
- {
- ZVAL_RES(return_value, zend_register_resource(hdr, le_hdrhistogram_descriptor));
- }
-
--static zend_always_inline void hdr_register_iter_resource(zval *return_value, struct hdr_iter* iter TSRMLS_DC)
-+static zend_always_inline void hdr_register_iter_resource(zval *return_value, struct hdr_iter* iter)
- {
- ZVAL_RES(return_value, zend_register_resource(iter, le_hdrhistogram_iter_descriptor));
- }
-
--static zend_always_inline struct hdr_histogram* hdr_fetch_resource(zval *res, zval *return_value TSRMLS_DC)
-+static zend_always_inline struct hdr_histogram* hdr_fetch_resource(zval *res, zval *return_value)
- {
- struct hdr_histogram *hdr;
-
- return (struct hdr_histogram*)zend_fetch_resource(Z_RES_P(res), PHP_HDRHISTOGRAM_DESCRIPTOR_RES_NAME, le_hdrhistogram_descriptor);
- }
-
--static zend_always_inline struct hdr_iter* hdr_fetch_iterator(zval *res, zval *return_value TSRMLS_DC)
-+static zend_always_inline struct hdr_iter* hdr_fetch_iterator(zval *res, zval *return_value)
- {
- struct hdr_iter *iterator;
-
-@@ -48,37 +54,10 @@ static zend_always_inline zval* hdr_hash_index_find(HashTable *arr, zend_ulong h
- return zend_hash_index_find(arr, h);
- }
-
--zend_function_entry hdrhistogram_functions[] = {
-- PHP_FE(hdr_init, NULL)
-- PHP_FE(hdr_get_memory_size, NULL)
-- PHP_FE(hdr_record_value, NULL)
-- PHP_FE(hdr_record_values, NULL)
-- PHP_FE(hdr_record_corrected_value, NULL)
-- PHP_FE(hdr_mean, NULL)
-- PHP_FE(hdr_stddev, NULL)
-- PHP_FE(hdr_min, NULL)
-- PHP_FE(hdr_max, NULL)
-- PHP_FE(hdr_total_count, NULL)
-- PHP_FE(hdr_reset, NULL)
-- PHP_FE(hdr_count_at_value, NULL)
-- PHP_FE(hdr_value_at_percentile, NULL)
-- PHP_FE(hdr_add, NULL)
-- PHP_FE(hdr_merge_into, NULL)
-- PHP_FE(hdr_iter_init, NULL)
-- PHP_FE(hdr_iter_next, NULL)
-- PHP_FE(hdr_percentile_iter_init, NULL)
-- PHP_FE(hdr_percentile_iter_next, NULL)
-- PHP_FE(hdr_export, NULL)
-- PHP_FE(hdr_import, NULL)
-- PHP_FE(hdr_base64_encode, NULL)
-- PHP_FE(hdr_base64_decode, NULL)
-- { NULL, NULL, NULL }
--};
--
- zend_module_entry hdrhistogram_module_entry = {
- STANDARD_MODULE_HEADER,
- "hdrhistogram",
-- hdrhistogram_functions, /* List of functions exposed */
-+ ext_functions, /* List of functions exposed */
- PHP_MINIT(hdrhistogram), /* Module init callback */
- PHP_MSHUTDOWN(hdrhistogram), /* Module shutdown callback */
- PHP_RINIT(hdrhistogram), /* Request init callback */
-@@ -92,7 +71,7 @@ zend_module_entry hdrhistogram_module_entry = {
- ZEND_GET_MODULE(hdrhistogram)
- #endif
-
--static void php_hdrhistogram_descriptor_dtor(zend_resource *rsrc TSRMLS_DC)
-+static void php_hdrhistogram_descriptor_dtor(zend_resource *rsrc)
- {
- free(rsrc->ptr);
- }
-@@ -141,9 +120,9 @@ PHP_FUNCTION(hdr_init)
- long lowest_trackable_value, highest_trackable_value, significant_figures;
- int res;
-
-- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lll",
-+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "lll",
- &lowest_trackable_value, &highest_trackable_value, &significant_figures) == FAILURE) {
-- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid arguments passed.");
-+ php_error_docref(NULL, E_WARNING, "Invalid arguments passed.");
-
- RETURN_FALSE;
- }
-@@ -151,9 +130,9 @@ PHP_FUNCTION(hdr_init)
- res = hdr_init(lowest_trackable_value, highest_trackable_value, significant_figures, &hdr);
-
- if (res == 0) {
-- hdr_register_hdr_resource(return_value, hdr TSRMLS_CC);
-+ hdr_register_hdr_resource(return_value, hdr);
- } else if (res == EINVAL) {
-- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Lowest trackable value has to be >= 1.");
-+ php_error_docref(NULL, E_WARNING, "Lowest trackable value has to be >= 1.");
-
- RETURN_FALSE;
- } else if (res == ENOMEM) {
-@@ -166,11 +145,11 @@ PHP_FUNCTION(hdr_get_memory_size)
- struct hdr_histogram *hdr;
- zval *zhdr;
-
-- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zhdr) == FAILURE) {
-+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &zhdr) == FAILURE) {
- RETURN_FALSE;
- }
-
-- hdr = hdr_fetch_resource(zhdr, return_value TSRMLS_CC);
-+ hdr = hdr_fetch_resource(zhdr, return_value);
-
- RETURN_LONG(hdr_get_memory_size(hdr));
- }
-@@ -180,11 +159,11 @@ PHP_FUNCTION(hdr_mean)
- struct hdr_histogram *hdr;
- zval *zhdr;
-
-- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zhdr) == FAILURE) {
-+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &zhdr) == FAILURE) {
- RETURN_FALSE;
- }
-
-- hdr = hdr_fetch_resource(zhdr, return_value TSRMLS_CC);
-+ hdr = hdr_fetch_resource(zhdr, return_value);
-
- RETURN_LONG(hdr_mean(hdr));
- }
-@@ -194,11 +173,11 @@ PHP_FUNCTION(hdr_stddev)
- struct hdr_histogram *hdr;
- zval *zhdr;
-
-- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zhdr) == FAILURE) {
-+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &zhdr) == FAILURE) {
- RETURN_FALSE;
- }
-
-- hdr = hdr_fetch_resource(zhdr, return_value TSRMLS_CC);
-+ hdr = hdr_fetch_resource(zhdr, return_value);
-
- RETURN_DOUBLE(hdr_stddev(hdr));
- }
-@@ -209,11 +188,11 @@ PHP_FUNCTION(hdr_min)
- struct hdr_histogram *hdr;
- zval *zhdr;
-
-- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zhdr) == FAILURE) {
-+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &zhdr) == FAILURE) {
- RETURN_FALSE;
- }
-
-- hdr = hdr_fetch_resource(zhdr, return_value TSRMLS_CC);
-+ hdr = hdr_fetch_resource(zhdr, return_value);
-
- RETURN_LONG(hdr_min(hdr));
- }
-@@ -223,11 +202,11 @@ PHP_FUNCTION(hdr_max)
- struct hdr_histogram *hdr;
- zval *zhdr;
-
-- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zhdr) == FAILURE) {
-+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &zhdr) == FAILURE) {
- RETURN_FALSE;
- }
-
-- hdr = hdr_fetch_resource(zhdr, return_value TSRMLS_CC);
-+ hdr = hdr_fetch_resource(zhdr, return_value);
-
- RETURN_LONG(hdr_max(hdr));
- }
-@@ -237,11 +216,11 @@ PHP_FUNCTION(hdr_total_count)
- struct hdr_histogram *hdr;
- zval *zhdr;
-
-- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zhdr) == FAILURE) {
-+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &zhdr) == FAILURE) {
- RETURN_FALSE;
- }
-
-- hdr = hdr_fetch_resource(zhdr, return_value TSRMLS_CC);
-+ hdr = hdr_fetch_resource(zhdr, return_value);
-
- RETURN_LONG(hdr->total_count);
- }
-@@ -252,11 +231,11 @@ PHP_FUNCTION(hdr_record_value)
- zval *zhdr;
- long value;
-
-- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &zhdr, &value) == FAILURE) {
-+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "rl", &zhdr, &value) == FAILURE) {
- RETURN_FALSE;
- }
-
-- hdr = hdr_fetch_resource(zhdr, return_value TSRMLS_CC);
-+ hdr = hdr_fetch_resource(zhdr, return_value);
-
- if (hdr_record_value(hdr, value) == 0) {
- RETURN_FALSE;
-@@ -272,11 +251,11 @@ PHP_FUNCTION(hdr_record_values)
- long value;
- long count;
-
-- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rll", &zhdr, &value, &count) == FAILURE) {
-+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "rll", &zhdr, &value, &count) == FAILURE) {
- RETURN_FALSE;
- }
-
-- hdr = hdr_fetch_resource(zhdr, return_value TSRMLS_CC);
-+ hdr = hdr_fetch_resource(zhdr, return_value);
-
- if (hdr_record_values(hdr, value, count) == 0) {
- RETURN_FALSE;
-@@ -292,11 +271,11 @@ PHP_FUNCTION(hdr_record_corrected_value)
- long value;
- long expected_interval;
-
-- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rll", &zhdr, &value, &expected_interval) == FAILURE) {
-+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "rll", &zhdr, &value, &expected_interval) == FAILURE) {
- RETURN_FALSE;
- }
-
-- hdr = hdr_fetch_resource(zhdr, return_value TSRMLS_CC);
-+ hdr = hdr_fetch_resource(zhdr, return_value);
-
- hdr_record_corrected_value(hdr, value, expected_interval);
- }
-@@ -306,11 +285,11 @@ PHP_FUNCTION(hdr_reset)
- struct hdr_histogram *hdr;
- zval *zhdr;
-
-- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zhdr) == FAILURE) {
-+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &zhdr) == FAILURE) {
- RETURN_FALSE;
- }
-
-- hdr = hdr_fetch_resource(zhdr, return_value TSRMLS_CC);
-+ hdr = hdr_fetch_resource(zhdr, return_value);
-
- hdr_reset(hdr);
- }
-@@ -321,11 +300,11 @@ PHP_FUNCTION(hdr_count_at_value)
- zval *zhdr;
- long value;
-
-- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &zhdr, &value) == FAILURE) {
-+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "rl", &zhdr, &value) == FAILURE) {
- RETURN_FALSE;
- }
-
-- hdr = hdr_fetch_resource(zhdr, return_value TSRMLS_CC);
-+ hdr = hdr_fetch_resource(zhdr, return_value);
-
- RETURN_LONG(hdr_count_at_value(hdr, value));
- }
-@@ -336,11 +315,11 @@ PHP_FUNCTION(hdr_value_at_percentile)
- zval *zhdr;
- double percentile;
-
-- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rd", &zhdr, &percentile) == FAILURE) {
-+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "rd", &zhdr, &percentile) == FAILURE) {
- RETURN_FALSE;
- }
-
-- hdr = hdr_fetch_resource(zhdr, return_value TSRMLS_CC);
-+ hdr = hdr_fetch_resource(zhdr, return_value);
-
- RETURN_LONG(hdr_value_at_percentile(hdr, percentile));
- }
-@@ -351,12 +330,12 @@ PHP_FUNCTION(hdr_add)
- zval *a, *b;
- int res;
-
-- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rr", &a, &b) == FAILURE) {
-+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "rr", &a, &b) == FAILURE) {
- RETURN_FALSE;
- }
-
-- hdra = hdr_fetch_resource(a, return_value TSRMLS_CC);
-- hdrb = hdr_fetch_resource(b, return_value TSRMLS_CC);
-+ hdra = hdr_fetch_resource(a, return_value);
-+ hdrb = hdr_fetch_resource(b, return_value);
-
- res = hdr_init(hdra->lowest_trackable_value, hdra->highest_trackable_value, hdra->significant_figures, &hdr_new);
-
-@@ -364,9 +343,9 @@ PHP_FUNCTION(hdr_add)
- hdr_add(hdr_new, hdrb);
-
- if (res == 0) {
-- hdr_register_hdr_resource(return_value, hdr_new TSRMLS_CC);
-+ hdr_register_hdr_resource(return_value, hdr_new);
- } else if (res == EINVAL) {
-- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Lowest trackable value has to be >= 1.");
-+ php_error_docref(NULL, E_WARNING, "Lowest trackable value has to be >= 1.");
-
- RETURN_FALSE;
- } else if (res == ENOMEM) {
-@@ -379,12 +358,12 @@ PHP_FUNCTION(hdr_merge_into)
- struct hdr_histogram *hdra, *hdrb;
- zval *a, *b;
-
-- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rr", &a, &b) == FAILURE) {
-+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "rr", &a, &b) == FAILURE) {
- RETURN_FALSE;
- }
-
-- hdra = hdr_fetch_resource(a, return_value TSRMLS_CC);
-- hdrb = hdr_fetch_resource(b, return_value TSRMLS_CC);
-+ hdra = hdr_fetch_resource(a, return_value);
-+ hdrb = hdr_fetch_resource(b, return_value);
-
- RETURN_LONG(hdr_add(hdra, hdrb));
- }
-@@ -395,16 +374,16 @@ PHP_FUNCTION(hdr_iter_init)
- struct hdr_histogram *hdr;
- zval *zhdr;
-
-- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zhdr) == FAILURE) {
-+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &zhdr) == FAILURE) {
- RETURN_FALSE;
- }
-
-- hdr = hdr_fetch_resource(zhdr, return_value TSRMLS_CC);
-+ hdr = hdr_fetch_resource(zhdr, return_value);
-
- iterator = malloc(sizeof(struct hdr_iter));
- hdr_iter_init(iterator, hdr);
-
-- hdr_register_iter_resource(return_value, iterator TSRMLS_CC);
-+ hdr_register_iter_resource(return_value, iterator);
- }
-
- PHP_FUNCTION(hdr_percentile_iter_init)
-@@ -414,16 +393,16 @@ PHP_FUNCTION(hdr_percentile_iter_init)
- zval *zhdr;
- long ticks_per_half_distance;
-
-- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "rl", &zhdr, &ticks_per_half_distance) == FAILURE) {
-+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "rl", &zhdr, &ticks_per_half_distance) == FAILURE) {
- RETURN_FALSE;
- }
-
-- hdr = hdr_fetch_resource(zhdr, return_value TSRMLS_CC);
-+ hdr = hdr_fetch_resource(zhdr, return_value);
-
- iterator = malloc(sizeof(struct hdr_iter));
- hdr_iter_percentile_init(iterator, hdr, ticks_per_half_distance);
-
-- hdr_register_iter_resource(return_value, iterator TSRMLS_CC);
-+ hdr_register_iter_resource(return_value, iterator);
- }
-
- PHP_FUNCTION(hdr_iter_next)
-@@ -431,11 +410,11 @@ PHP_FUNCTION(hdr_iter_next)
- struct hdr_iter *iterator;
- zval *zhdr;
-
-- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zhdr) == FAILURE) {
-+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &zhdr) == FAILURE) {
- RETURN_FALSE;
- }
-
-- iterator = hdr_fetch_iterator(zhdr, return_value TSRMLS_CC);
-+ iterator = hdr_fetch_iterator(zhdr, return_value);
-
- if (hdr_iter_next(iterator)) {
- array_init(return_value);
-@@ -453,11 +432,11 @@ PHP_FUNCTION(hdr_percentile_iter_next)
- struct hdr_iter *iterator;
- zval *zhdr;
-
-- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zhdr) == FAILURE) {
-+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &zhdr) == FAILURE) {
- RETURN_FALSE;
- }
-
-- iterator = hdr_fetch_iterator(zhdr, return_value TSRMLS_CC);
-+ iterator = hdr_fetch_iterator(zhdr, return_value);
-
- if (hdr_iter_next(iterator)) {
- array_init(return_value);
-@@ -483,11 +462,11 @@ PHP_FUNCTION(hdr_export)
- int found = 0;
- long skipped = 0;
-
-- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zhdr) == FAILURE) {
-+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &zhdr) == FAILURE) {
- RETURN_FALSE;
- }
-
-- hdr = hdr_fetch_resource(zhdr, return_value TSRMLS_CC);
-+ hdr = hdr_fetch_resource(zhdr, return_value);
-
- array_init(return_value);
-
-@@ -531,7 +510,7 @@ PHP_FUNCTION(hdr_import)
- int res, count;
- zend_ulong i, bucket, skipped;
-
-- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a", &import) == FAILURE) {
-+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "a", &import) == FAILURE) {
- RETURN_FALSE;
- }
-
-@@ -542,7 +521,7 @@ PHP_FUNCTION(hdr_import)
- }
-
- if (lowest_trackable_value <= 0) {
-- php_error_docref(NULL TSRMLS_CC, E_WARNING, "lowest_trackable_value (ltv) must be >= 1.");
-+ php_error_docref(NULL, E_WARNING, "lowest_trackable_value (ltv) must be >= 1.");
- RETURN_FALSE;
- }
-
-@@ -553,7 +532,7 @@ PHP_FUNCTION(hdr_import)
- }
-
- if (highest_trackable_value <= 0) {
-- php_error_docref(NULL TSRMLS_CC, E_WARNING, "highest_trackable_value (htv) must be >= 1.");
-+ php_error_docref(NULL, E_WARNING, "highest_trackable_value (htv) must be >= 1.");
- RETURN_FALSE;
- }
-
-@@ -564,7 +543,7 @@ PHP_FUNCTION(hdr_import)
- }
-
- if (significant_figures <= 0 || significant_figures > 3) {
-- php_error_docref(NULL TSRMLS_CC, E_WARNING, "significant_figures (sf) must be 1, 2, or 3.");
-+ php_error_docref(NULL, E_WARNING, "significant_figures (sf) must be 1, 2, or 3.");
- RETURN_FALSE;
- }
-
-@@ -575,7 +554,7 @@ PHP_FUNCTION(hdr_import)
- }
-
- if (skipped < 0 || lowest_trackable_value < 1 || highest_trackable_value < lowest_trackable_value || significant_figures < 1) {
-- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid values for ltv, htv, sf or sk keys given.");
-+ php_error_docref(NULL, E_WARNING, "Invalid values for ltv, htv, sf or sk keys given.");
- RETURN_FALSE;
- }
-
-@@ -587,9 +566,9 @@ PHP_FUNCTION(hdr_import)
- res = hdr_init(lowest_trackable_value, highest_trackable_value, significant_figures, &hdr);
-
- if (res == 0) {
-- hdr_register_hdr_resource(return_value, hdr TSRMLS_CC);
-+ hdr_register_hdr_resource(return_value, hdr);
- } else if (res == EINVAL) {
-- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Lowest trackable value has to be >= 1.");
-+ php_error_docref(NULL, E_WARNING, "Lowest trackable value has to be >= 1.");
-
- RETURN_FALSE;
- } else if (res == ENOMEM) {
-@@ -627,9 +606,9 @@ PHP_FUNCTION(hdr_import)
- res = hdr_init(lowest_trackable_value, highest_trackable_value, significant_figures, &hdr);
-
- if (res == 0) {
-- hdr_register_hdr_resource(return_value, hdr TSRMLS_CC);
-+ hdr_register_hdr_resource(return_value, hdr);
- } else if (res == EINVAL) {
-- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Lowest trackable value has to be >= 1.");
-+ php_error_docref(NULL, E_WARNING, "Lowest trackable value has to be >= 1.");
-
- RETURN_FALSE;
- } else if (res == ENOMEM) {
-@@ -668,9 +647,9 @@ PHP_FUNCTION(hdr_import)
- res = hdr_init(lowest_trackable_value, highest_trackable_value, significant_figures, &hdr);
-
- if (res == 0) {
-- hdr_register_hdr_resource(return_value, hdr TSRMLS_CC);
-+ hdr_register_hdr_resource(return_value, hdr);
- } else if (res == EINVAL) {
-- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Lowest trackable value has to be >= 1.");
-+ php_error_docref(NULL, E_WARNING, "Lowest trackable value has to be >= 1.");
-
- RETURN_FALSE;
- } else if (res == ENOMEM) {
-@@ -694,7 +673,7 @@ PHP_FUNCTION(hdr_import)
- hdr->normalizing_index_offset = 0;
- hdr->conversion_ratio = 1.0;
- } else {
-- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Missing counts (c) or bucket (b) key or not arrays.");
-+ php_error_docref(NULL, E_WARNING, "Missing counts (c) or bucket (b) key or not arrays.");
- RETURN_FALSE;
- }
- }
-@@ -705,14 +684,14 @@ PHP_FUNCTION(hdr_base64_encode)
- zval *zhdr;
- char *result = NULL;
-
-- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &zhdr) == FAILURE) {
-+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "r", &zhdr) == FAILURE) {
- RETURN_FALSE;
- }
-
-- hdr = hdr_fetch_resource(zhdr, return_value TSRMLS_CC);
-+ hdr = hdr_fetch_resource(zhdr, return_value);
-
- if (hdr_log_encode(hdr, &result) != 0) {
-- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot encode histogram");
-+ php_error_docref(NULL, E_WARNING, "Cannot encode histogram");
-
- RETURN_FALSE;
- }
-@@ -726,15 +705,15 @@ PHP_FUNCTION(hdr_base64_decode)
- char *data = NULL;
- strsize_t data_len;
-
-- if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &data, &data_len) == FAILURE) {
-+ if (zend_parse_parameters(ZEND_NUM_ARGS(), "s", &data, &data_len) == FAILURE) {
- RETURN_FALSE;
- }
-
- if (hdr_log_decode(&hdr, data, data_len) != 0) {
-- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot decode histogram");
-+ php_error_docref(NULL, E_WARNING, "Cannot decode histogram");
-
- RETURN_FALSE;
- }
-
-- hdr_register_hdr_resource(return_value, hdr TSRMLS_CC);
-+ hdr_register_hdr_resource(return_value, hdr);
- }
-diff --git a/hdrhistogram.stub.php b/hdrhistogram.stub.php
-new file mode 100644
-index 0000000..c919d98
---- /dev/null
-+++ b/hdrhistogram.stub.php
-@@ -0,0 +1,127 @@
-+<?php
-+
-+/**
-+ * @generate-function-entries
-+ * @generate-legacy-arginfo
-+ */
-+
-+/**
-+ * @return resource|false
-+ */
-+function hdr_init(int $lowest_trackable_value, int $highest_trackable_value, int $significant_figures) {}
-+
-+/**
-+ * @param resource $hdr
-+ */
-+function hdr_get_memory_size($hdr): int {};
-+
-+/**
-+ * @param resource $hdr
-+ */
-+function hdr_record_value($hdr, int $value): bool {};
-+
-+/**
-+ * @param resource $hdr
-+ */
-+function hdr_record_values($hdr, int $value, int $count): bool {};
-+
-+/**
-+ * @param resource $hdr
-+ */
-+function hdr_record_corrected_value($hdr, int $value, int $expected_interval): void {};
-+
-+/**
-+ * @param resource $hdr
-+ */
-+function hdr_mean($hdr): int {};
-+
-+/**
-+ * @param resource $hdr
-+ */
-+function hdr_stddev($hdr): float {};
-+
-+/**
-+ * @param resource $hdr
-+ */
-+function hdr_min($hdr): int {};
-+
-+/**
-+ * @param resource $hdr
-+ */
-+function hdr_max($hdr): int {};
-+
-+/**
-+ * @param resource $hdr
-+ */
-+function hdr_total_count($hdr): int {};
-+
-+/**
-+ * @param resource $hdr
-+ */
-+function hdr_reset($hdr): void {};
-+
-+/**
-+ * @param resource $hdr
-+ */
-+function hdr_count_at_value($hdr, int $value): int {};
-+
-+/**
-+ * @param resource $hdr
-+ */
-+function hdr_value_at_percentile($hdr, float $percentile): int {};
-+
-+/**
-+ * @param resource $hdr1
-+ * @param resource $hdr2
-+ * @return resource|false
-+ */
-+function hdr_add($hdr1, $hdr2) {};
-+
-+/**
-+ * @param resource $hdr1
-+ * @param resource $hdr2
-+ */
-+function hdr_merge_into($hdr1, $hdr2): int {};
-+
-+/**
-+ * @param resource $hdr
-+ * @return resource|false
-+ */
-+function hdr_iter_init($hdr) {};
-+
-+/**
-+ * @param resource $hdr
-+ */
-+function hdr_iter_next($hdr): false|Array {};
-+
-+/**
-+ * @param resource $hdr
-+ * @return resource|false
-+ */
-+function hdr_percentile_iter_init($hdr, int $ticks_per_half_distance) {};
-+
-+/**
-+ * @param resource $hdr
-+ */
-+function hdr_percentile_iter_next($hdr): false|Array {};
-+
-+/**
-+ * @param resource $hdr
-+ */
-+function hdr_export($hdr): Array {};
-+
-+/**
-+ * @return resource|false
-+ */
-+function hdr_import(Array $import) {};
-+
-+/**
-+ * @param resource $hdr
-+ */
-+function hdr_base64_encode($hdr): false|string {};
-+
-+/**
-+ * @return resource|false
-+ */
-+function hdr_base64_decode(string $data) {};
-+
-diff --git a/hdrhistogram_arginfo.h b/hdrhistogram_arginfo.h
-new file mode 100644
-index 0000000..40b04f8
---- /dev/null
-+++ b/hdrhistogram_arginfo.h
-@@ -0,0 +1,149 @@
-+/* This is a generated file, edit the .stub.php file instead.
-+ * Stub hash: 195b1ceef170a9dd44acc536ff6ae157b79648be */
-+
-+ZEND_BEGIN_ARG_INFO_EX(arginfo_hdr_init, 0, 0, 3)
-+ ZEND_ARG_TYPE_INFO(0, lowest_trackable_value, IS_LONG, 0)
-+ ZEND_ARG_TYPE_INFO(0, highest_trackable_value, IS_LONG, 0)
-+ ZEND_ARG_TYPE_INFO(0, significant_figures, IS_LONG, 0)
-+ZEND_END_ARG_INFO()
-+
-+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_hdr_get_memory_size, 0, 1, IS_LONG, 0)
-+ ZEND_ARG_INFO(0, hdr)
-+ZEND_END_ARG_INFO()
-+
-+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_hdr_record_value, 0, 2, _IS_BOOL, 0)
-+ ZEND_ARG_INFO(0, hdr)
-+ ZEND_ARG_TYPE_INFO(0, value, IS_LONG, 0)
-+ZEND_END_ARG_INFO()
-+
-+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_hdr_record_values, 0, 3, _IS_BOOL, 0)
-+ ZEND_ARG_INFO(0, hdr)
-+ ZEND_ARG_TYPE_INFO(0, value, IS_LONG, 0)
-+ ZEND_ARG_TYPE_INFO(0, count, IS_LONG, 0)
-+ZEND_END_ARG_INFO()
-+
-+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_hdr_record_corrected_value, 0, 3, IS_VOID, 0)
-+ ZEND_ARG_INFO(0, hdr)
-+ ZEND_ARG_TYPE_INFO(0, value, IS_LONG, 0)
-+ ZEND_ARG_TYPE_INFO(0, expected_interval, IS_LONG, 0)
-+ZEND_END_ARG_INFO()
-+
-+#define arginfo_hdr_mean arginfo_hdr_get_memory_size
-+
-+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_hdr_stddev, 0, 1, IS_DOUBLE, 0)
-+ ZEND_ARG_INFO(0, hdr)
-+ZEND_END_ARG_INFO()
-+
-+#define arginfo_hdr_min arginfo_hdr_get_memory_size
-+
-+#define arginfo_hdr_max arginfo_hdr_get_memory_size
-+
-+#define arginfo_hdr_total_count arginfo_hdr_get_memory_size
-+
-+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_hdr_reset, 0, 1, IS_VOID, 0)
-+ ZEND_ARG_INFO(0, hdr)
-+ZEND_END_ARG_INFO()
-+
-+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_hdr_count_at_value, 0, 2, IS_LONG, 0)
-+ ZEND_ARG_INFO(0, hdr)
-+ ZEND_ARG_TYPE_INFO(0, value, IS_LONG, 0)
-+ZEND_END_ARG_INFO()
-+
-+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_hdr_value_at_percentile, 0, 2, IS_LONG, 0)
-+ ZEND_ARG_INFO(0, hdr)
-+ ZEND_ARG_TYPE_INFO(0, percentile, IS_DOUBLE, 0)
-+ZEND_END_ARG_INFO()
-+
-+ZEND_BEGIN_ARG_INFO_EX(arginfo_hdr_add, 0, 0, 2)
-+ ZEND_ARG_INFO(0, hdr1)
-+ ZEND_ARG_INFO(0, hdr2)
-+ZEND_END_ARG_INFO()
-+
-+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_hdr_merge_into, 0, 2, IS_LONG, 0)
-+ ZEND_ARG_INFO(0, hdr1)
-+ ZEND_ARG_INFO(0, hdr2)
-+ZEND_END_ARG_INFO()
-+
-+ZEND_BEGIN_ARG_INFO_EX(arginfo_hdr_iter_init, 0, 0, 1)
-+ ZEND_ARG_INFO(0, hdr)
-+ZEND_END_ARG_INFO()
-+
-+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_hdr_iter_next, 0, 1, MAY_BE_FALSE|MAY_BE_ARRAY)
-+ ZEND_ARG_INFO(0, hdr)
-+ZEND_END_ARG_INFO()
-+
-+ZEND_BEGIN_ARG_INFO_EX(arginfo_hdr_percentile_iter_init, 0, 0, 2)
-+ ZEND_ARG_INFO(0, hdr)
-+ ZEND_ARG_TYPE_INFO(0, ticks_per_half_distance, IS_LONG, 0)
-+ZEND_END_ARG_INFO()
-+
-+#define arginfo_hdr_percentile_iter_next arginfo_hdr_iter_next
-+
-+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_hdr_export, 0, 1, IS_ARRAY, 0)
-+ ZEND_ARG_INFO(0, hdr)
-+ZEND_END_ARG_INFO()
-+
-+ZEND_BEGIN_ARG_INFO_EX(arginfo_hdr_import, 0, 0, 1)
-+ ZEND_ARG_TYPE_INFO(0, import, IS_ARRAY, 0)
-+ZEND_END_ARG_INFO()
-+
-+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_hdr_base64_encode, 0, 1, MAY_BE_FALSE|MAY_BE_STRING)
-+ ZEND_ARG_INFO(0, hdr)
-+ZEND_END_ARG_INFO()
-+
-+ZEND_BEGIN_ARG_INFO_EX(arginfo_hdr_base64_decode, 0, 0, 1)
-+ ZEND_ARG_TYPE_INFO(0, data, IS_STRING, 0)
-+ZEND_END_ARG_INFO()
-+
-+
-+ZEND_FUNCTION(hdr_init);
-+ZEND_FUNCTION(hdr_get_memory_size);
-+ZEND_FUNCTION(hdr_record_value);
-+ZEND_FUNCTION(hdr_record_values);
-+ZEND_FUNCTION(hdr_record_corrected_value);
-+ZEND_FUNCTION(hdr_mean);
-+ZEND_FUNCTION(hdr_stddev);
-+ZEND_FUNCTION(hdr_min);
-+ZEND_FUNCTION(hdr_max);
-+ZEND_FUNCTION(hdr_total_count);
-+ZEND_FUNCTION(hdr_reset);
-+ZEND_FUNCTION(hdr_count_at_value);
-+ZEND_FUNCTION(hdr_value_at_percentile);
-+ZEND_FUNCTION(hdr_add);
-+ZEND_FUNCTION(hdr_merge_into);
-+ZEND_FUNCTION(hdr_iter_init);
-+ZEND_FUNCTION(hdr_iter_next);
-+ZEND_FUNCTION(hdr_percentile_iter_init);
-+ZEND_FUNCTION(hdr_percentile_iter_next);
-+ZEND_FUNCTION(hdr_export);
-+ZEND_FUNCTION(hdr_import);
-+ZEND_FUNCTION(hdr_base64_encode);
-+ZEND_FUNCTION(hdr_base64_decode);
-+
-+
-+static const zend_function_entry ext_functions[] = {
-+ ZEND_FE(hdr_init, arginfo_hdr_init)
-+ ZEND_FE(hdr_get_memory_size, arginfo_hdr_get_memory_size)
-+ ZEND_FE(hdr_record_value, arginfo_hdr_record_value)
-+ ZEND_FE(hdr_record_values, arginfo_hdr_record_values)
-+ ZEND_FE(hdr_record_corrected_value, arginfo_hdr_record_corrected_value)
-+ ZEND_FE(hdr_mean, arginfo_hdr_mean)
-+ ZEND_FE(hdr_stddev, arginfo_hdr_stddev)
-+ ZEND_FE(hdr_min, arginfo_hdr_min)
-+ ZEND_FE(hdr_max, arginfo_hdr_max)
-+ ZEND_FE(hdr_total_count, arginfo_hdr_total_count)
-+ ZEND_FE(hdr_reset, arginfo_hdr_reset)
-+ ZEND_FE(hdr_count_at_value, arginfo_hdr_count_at_value)
-+ ZEND_FE(hdr_value_at_percentile, arginfo_hdr_value_at_percentile)
-+ ZEND_FE(hdr_add, arginfo_hdr_add)
-+ ZEND_FE(hdr_merge_into, arginfo_hdr_merge_into)
-+ ZEND_FE(hdr_iter_init, arginfo_hdr_iter_init)
-+ ZEND_FE(hdr_iter_next, arginfo_hdr_iter_next)
-+ ZEND_FE(hdr_percentile_iter_init, arginfo_hdr_percentile_iter_init)
-+ ZEND_FE(hdr_percentile_iter_next, arginfo_hdr_percentile_iter_next)
-+ ZEND_FE(hdr_export, arginfo_hdr_export)
-+ ZEND_FE(hdr_import, arginfo_hdr_import)
-+ ZEND_FE(hdr_base64_encode, arginfo_hdr_base64_encode)
-+ ZEND_FE(hdr_base64_decode, arginfo_hdr_base64_decode)
-+ ZEND_FE_END
-+};
-diff --git a/hdrhistogram_legacy_arginfo.h b/hdrhistogram_legacy_arginfo.h
-new file mode 100644
-index 0000000..030cfe4
---- /dev/null
-+++ b/hdrhistogram_legacy_arginfo.h
-@@ -0,0 +1,131 @@
-+/* This is a generated file, edit the .stub.php file instead.
-+ * Stub hash: 195b1ceef170a9dd44acc536ff6ae157b79648be */
-+
-+ZEND_BEGIN_ARG_INFO_EX(arginfo_hdr_init, 0, 0, 3)
-+ ZEND_ARG_INFO(0, lowest_trackable_value)
-+ ZEND_ARG_INFO(0, highest_trackable_value)
-+ ZEND_ARG_INFO(0, significant_figures)
-+ZEND_END_ARG_INFO()
-+
-+ZEND_BEGIN_ARG_INFO_EX(arginfo_hdr_get_memory_size, 0, 0, 1)
-+ ZEND_ARG_INFO(0, hdr)
-+ZEND_END_ARG_INFO()
-+
-+ZEND_BEGIN_ARG_INFO_EX(arginfo_hdr_record_value, 0, 0, 2)
-+ ZEND_ARG_INFO(0, hdr)
-+ ZEND_ARG_INFO(0, value)
-+ZEND_END_ARG_INFO()
-+
-+ZEND_BEGIN_ARG_INFO_EX(arginfo_hdr_record_values, 0, 0, 3)
-+ ZEND_ARG_INFO(0, hdr)
-+ ZEND_ARG_INFO(0, value)
-+ ZEND_ARG_INFO(0, count)
-+ZEND_END_ARG_INFO()
-+
-+ZEND_BEGIN_ARG_INFO_EX(arginfo_hdr_record_corrected_value, 0, 0, 3)
-+ ZEND_ARG_INFO(0, hdr)
-+ ZEND_ARG_INFO(0, value)
-+ ZEND_ARG_INFO(0, expected_interval)
-+ZEND_END_ARG_INFO()
-+
-+#define arginfo_hdr_mean arginfo_hdr_get_memory_size
-+
-+#define arginfo_hdr_stddev arginfo_hdr_get_memory_size
-+
-+#define arginfo_hdr_min arginfo_hdr_get_memory_size
-+
-+#define arginfo_hdr_max arginfo_hdr_get_memory_size
-+
-+#define arginfo_hdr_total_count arginfo_hdr_get_memory_size
-+
-+#define arginfo_hdr_reset arginfo_hdr_get_memory_size
-+
-+#define arginfo_hdr_count_at_value arginfo_hdr_record_value
-+
-+ZEND_BEGIN_ARG_INFO_EX(arginfo_hdr_value_at_percentile, 0, 0, 2)
-+ ZEND_ARG_INFO(0, hdr)
-+ ZEND_ARG_INFO(0, percentile)
-+ZEND_END_ARG_INFO()
-+
-+ZEND_BEGIN_ARG_INFO_EX(arginfo_hdr_add, 0, 0, 2)
-+ ZEND_ARG_INFO(0, hdr1)
-+ ZEND_ARG_INFO(0, hdr2)
-+ZEND_END_ARG_INFO()
-+
-+#define arginfo_hdr_merge_into arginfo_hdr_add
-+
-+#define arginfo_hdr_iter_init arginfo_hdr_get_memory_size
-+
-+#define arginfo_hdr_iter_next arginfo_hdr_get_memory_size
-+
-+ZEND_BEGIN_ARG_INFO_EX(arginfo_hdr_percentile_iter_init, 0, 0, 2)
-+ ZEND_ARG_INFO(0, hdr)
-+ ZEND_ARG_INFO(0, ticks_per_half_distance)
-+ZEND_END_ARG_INFO()
-+
-+#define arginfo_hdr_percentile_iter_next arginfo_hdr_get_memory_size
-+
-+#define arginfo_hdr_export arginfo_hdr_get_memory_size
-+
-+ZEND_BEGIN_ARG_INFO_EX(arginfo_hdr_import, 0, 0, 1)
-+ ZEND_ARG_INFO(0, import)
-+ZEND_END_ARG_INFO()
-+
-+#define arginfo_hdr_base64_encode arginfo_hdr_get_memory_size
-+
-+ZEND_BEGIN_ARG_INFO_EX(arginfo_hdr_base64_decode, 0, 0, 1)
-+ ZEND_ARG_INFO(0, data)
-+ZEND_END_ARG_INFO()
-+
-+
-+ZEND_FUNCTION(hdr_init);
-+ZEND_FUNCTION(hdr_get_memory_size);
-+ZEND_FUNCTION(hdr_record_value);
-+ZEND_FUNCTION(hdr_record_values);
-+ZEND_FUNCTION(hdr_record_corrected_value);
-+ZEND_FUNCTION(hdr_mean);
-+ZEND_FUNCTION(hdr_stddev);
-+ZEND_FUNCTION(hdr_min);
-+ZEND_FUNCTION(hdr_max);
-+ZEND_FUNCTION(hdr_total_count);
-+ZEND_FUNCTION(hdr_reset);
-+ZEND_FUNCTION(hdr_count_at_value);
-+ZEND_FUNCTION(hdr_value_at_percentile);
-+ZEND_FUNCTION(hdr_add);
-+ZEND_FUNCTION(hdr_merge_into);
-+ZEND_FUNCTION(hdr_iter_init);
-+ZEND_FUNCTION(hdr_iter_next);
-+ZEND_FUNCTION(hdr_percentile_iter_init);
-+ZEND_FUNCTION(hdr_percentile_iter_next);
-+ZEND_FUNCTION(hdr_export);
-+ZEND_FUNCTION(hdr_import);
-+ZEND_FUNCTION(hdr_base64_encode);
-+ZEND_FUNCTION(hdr_base64_decode);
-+
-+
-+static const zend_function_entry ext_functions[] = {
-+ ZEND_FE(hdr_init, arginfo_hdr_init)
-+ ZEND_FE(hdr_get_memory_size, arginfo_hdr_get_memory_size)
-+ ZEND_FE(hdr_record_value, arginfo_hdr_record_value)
-+ ZEND_FE(hdr_record_values, arginfo_hdr_record_values)
-+ ZEND_FE(hdr_record_corrected_value, arginfo_hdr_record_corrected_value)
-+ ZEND_FE(hdr_mean, arginfo_hdr_mean)
-+ ZEND_FE(hdr_stddev, arginfo_hdr_stddev)
-+ ZEND_FE(hdr_min, arginfo_hdr_min)
-+ ZEND_FE(hdr_max, arginfo_hdr_max)
-+ ZEND_FE(hdr_total_count, arginfo_hdr_total_count)
-+ ZEND_FE(hdr_reset, arginfo_hdr_reset)
-+ ZEND_FE(hdr_count_at_value, arginfo_hdr_count_at_value)
-+ ZEND_FE(hdr_value_at_percentile, arginfo_hdr_value_at_percentile)
-+ ZEND_FE(hdr_add, arginfo_hdr_add)
-+ ZEND_FE(hdr_merge_into, arginfo_hdr_merge_into)
-+ ZEND_FE(hdr_iter_init, arginfo_hdr_iter_init)
-+ ZEND_FE(hdr_iter_next, arginfo_hdr_iter_next)
-+ ZEND_FE(hdr_percentile_iter_init, arginfo_hdr_percentile_iter_init)
-+ ZEND_FE(hdr_percentile_iter_next, arginfo_hdr_percentile_iter_next)
-+ ZEND_FE(hdr_export, arginfo_hdr_export)
-+ ZEND_FE(hdr_import, arginfo_hdr_import)
-+ ZEND_FE(hdr_base64_encode, arginfo_hdr_base64_encode)
-+ ZEND_FE(hdr_base64_decode, arginfo_hdr_base64_decode)
-+ ZEND_FE_END
-+};
-diff --git a/tests/hdrhistogram_009_php8.phpt b/tests/hdrhistogram_009_php8.phpt
-new file mode 100644
-index 0000000..88af935
---- /dev/null
-+++ b/tests/hdrhistogram_009_php8.phpt
-@@ -0,0 +1,99 @@
-+--TEST--
-+hdrhistogram: Base64 Encode/Decode
-+--SKIPIF--
-+<?php
-+if (PHP_VERSION_ID < 80000) die("skip PHP 8 only");
-+?>
-+--FILE--
-+<?php
-+
-+$a = hdr_init(1, 100, 1);
-+
-+for ($i = 0; $i < 100; $i++) {
-+ hdr_record_values($a, $i, 1);
-+}
-+
-+$data = hdr_base64_encode($a);
-+$hdr = hdr_base64_decode($data);
-+
-+$iterator = hdr_iter_init($hdr);
-+$total = 0;
-+while ($data = hdr_iter_next($iterator)) {
-+ if ($data['count_at_index']) {
-+ echo $data['value'] . ': ' . $data['count_at_index'] . "\n";
-+ $total += $data['count_at_index'];
-+ }
-+}
-+echo "Total: $total\n";
-+
-+try {
-+ echo hdr_base64_encode("foo");
-+} catch (TypeError $e) {
-+ echo $e->getMessage()."\n";
-+}
-+echo hdr_base64_decode("foo");
-+
-+echo hdr_max(hdr_base64_decode(hdr_base64_encode(hdr_init(1, 100, 1))));
-+--EXPECTF--
-+0: 1
-+1: 1
-+2: 1
-+3: 1
-+4: 1
-+5: 1
-+6: 1
-+7: 1
-+8: 1
-+9: 1
-+10: 1
-+11: 1
-+12: 1
-+13: 1
-+14: 1
-+15: 1
-+16: 1
-+17: 1
-+18: 1
-+19: 1
-+20: 1
-+21: 1
-+22: 1
-+23: 1
-+24: 1
-+25: 1
-+26: 1
-+27: 1
-+28: 1
-+29: 1
-+30: 1
-+31: 1
-+32: 2
-+34: 2
-+36: 2
-+38: 2
-+40: 2
-+42: 2
-+44: 2
-+46: 2
-+48: 2
-+50: 2
-+52: 2
-+54: 2
-+56: 2
-+58: 2
-+60: 2
-+62: 2
-+64: 4
-+68: 4
-+72: 4
-+76: 4
-+80: 4
-+84: 4
-+88: 4
-+92: 4
-+96: 4
-+Total: 100
-+hdr_base64_encode(): Argument #1 ($hdr) must be of type resource, string given
-+
-+Warning: hdr_base64_decode(): Cannot decode histogram in %s on line %d
-+0
-diff --git a/tests/hdrhistogram_012.phpt b/tests/hdrhistogram_012.phpt
-index fba4ddf..311cc4c 100644
---- a/tests/hdrhistogram_012.phpt
-+++ b/tests/hdrhistogram_012.phpt
-@@ -1,5 +1,9 @@
- --TEST--
- HdrHistogram: hdr_import Error Handling
-+--SKIPIF--
-+<?php
-+if (PHP_VERSION_ID >= 80000) die("skip PHP < 8 only");
-+?>
- --FILE--
- <?php
-
-diff --git a/tests/hdrhistogram_012_php8.phpt b/tests/hdrhistogram_012_php8.phpt
-new file mode 100644
-index 0000000..576b3ed
---- /dev/null
-+++ b/tests/hdrhistogram_012_php8.phpt
-@@ -0,0 +1,40 @@
-+--TEST--
-+HdrHistogram: hdr_import Error Handling
-+--SKIPIF--
-+<?php
-+if (PHP_VERSION_ID < 80000) die("skip PHP 8 only");
-+?>
-+--FILE--
-+<?php
-+
-+$imported = hdr_import(["ltv" => 0, "htv" => 0, "sf" => 0, "sk" => 0, "c" => []]);
-+try {
-+ $imported = hdr_import();
-+} catch (ArgumentCountError $e) {
-+ echo $e->getMessage()."\n";
-+}
-+
-+$imported = hdr_import([]);
-+$imported = hdr_import(["ltv" => -1]);
-+$imported = hdr_import(["ltv" => 1, "htv" => -10]);
-+$imported = hdr_import(["ltv" => 1, "htv" => 10, "sf" => -2]);
-+$imported = hdr_import(["ltv" => 1, "htv" => 10, "sf" => 1, "c" => null]);
-+$imported = hdr_import(["ltv" => 1, "htv" => 10, "sf" => 1, "b" => null]);
-+$imported = hdr_import(["ltv" => 1, "htv" => 10, "sf" => 1, "b" => null, "c" => null]);
-+--EXPECTF--
-+Warning: hdr_import(): lowest_trackable_value (ltv) must be >= 1. in %s
-+hdr_import() expects exactly 1 argument, 0 given
-+
-+Warning: hdr_import(): Missing counts (c) or bucket (b) key or not arrays. in %s
-+
-+Warning: hdr_import(): lowest_trackable_value (ltv) must be >= 1. in %s
-+
-+Warning: hdr_import(): highest_trackable_value (htv) must be >= 1. in %s
-+
-+Warning: hdr_import(): significant_figures (sf) must be 1, 2, or 3. in %s
-+
-+Warning: hdr_import(): Missing counts (c) or bucket (b) key or not arrays. in %s
-+
-+Warning: hdr_import(): Missing counts (c) or bucket (b) key or not arrays. in %s
-+
-+Warning: hdr_import(): Missing counts (c) or bucket (b) key or not arrays. in %s
diff --git a/hdr_histogram-lib0114.patch b/hdr_histogram-lib0114.patch
deleted file mode 100644
index c53ba3a..0000000
--- a/hdr_histogram-lib0114.patch
+++ /dev/null
@@ -1,323 +0,0 @@
-From b62e02bf30b5967f6b5514dfba025c8c8ce1a431 Mon Sep 17 00:00:00 2001
-From: Remi Collet <remi@remirepo.net>
-Date: Tue, 1 Mar 2022 10:31:21 +0100
-Subject: [PATCH 1/3] Fix for libhdr_histogram version 0.11.4
-
----
- config.m4 | 76 ++++++++++++++++++++++++++++++--------------------
- hdrhistogram.c | 34 ++++++++++++++--------
- 2 files changed, 68 insertions(+), 42 deletions(-)
-
-diff --git a/config.m4 b/config.m4
-index aa4fec8..729a038 100644
---- a/config.m4
-+++ b/config.m4
-@@ -3,41 +3,57 @@ PHP_ARG_WITH(hdrhistogram,
- [ --with-hdrhistogram[=DIR] Enable "hdrhistogram" extension support])
-
- if test "$PHP_HDRHISTOGRAM" != "no"; then
-- SEARCH_PATH="/usr/local /usr"
-- SEARCH_FOR="/include/hdr/hdr_histogram.h" # you most likely want to change this
-+ AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
-
-- if test -r $PHP_HDRHISTOGRAM/$SEARCH_FOR; then
-- HDRHISTOGRAM_PATH=$PHP_HDRHISTOGRAM
-+ if test "$PHP_HDRHISTOGRAM" = "yes" -a -x "$PKG_CONFIG" && $PKG_CONFIG --exists hdr_histogram; then
-+
-+ AC_MSG_CHECKING([for hdrhistogram from pkg-config])
-+ LIBHDR_CFLAGS=`$PKG_CONFIG hdr_histogram --cflags`
-+ LIBHDR_LIBDIR=`$PKG_CONFIG hdr_histogram --libs`
-+ LIBHDR_VERSON=`$PKG_CONFIG hdr_histogram --modversion`
-+ AC_MSG_RESULT(found $LIBHDR_VERSON)
-+ if $PKG_CONFIG hdr_histogram --atleast-version 0.11.4; then
-+ AC_DEFINE(HAVE_HDRHISTOGRAM_0_11_4,1,[ ])
-+ fi
-+ PHP_EVAL_LIBLINE($LIBHDR_LIBDIR, HDRHISTOGRAM_SHARED_LIBADD)
-+ PHP_EVAL_INCLINE($LIBHDR_CFLAGS)
- else
-- AC_MSG_CHECKING([for hdrhistogram files in default path])
-- for i in $SEARCH_PATH ; do
-- if test -r $i/$SEARCH_FOR; then
-- HDRHISTOGRAM_PATH=$i
-- AC_MSG_RESULT(found in $i)
-+ SEARCH_PATH="/usr/local /usr"
-+ SEARCH_FOR="/include/hdr/hdr_histogram.h" # you most likely want to change this
-+
-+ if test -r $PHP_HDRHISTOGRAM/$SEARCH_FOR; then
-+ HDRHISTOGRAM_PATH=$PHP_HDRHISTOGRAM
-+ else
-+ AC_MSG_CHECKING([for hdrhistogram files in default path])
-+ for i in $SEARCH_PATH ; do
-+ if test -r $i/$SEARCH_FOR; then
-+ HDRHISTOGRAM_PATH=$i
-+ AC_MSG_RESULT(found in $i)
-+ fi
-+ done
- fi
-- done
-- fi
-
-- if test -z "$HDRHISTOGRAM_PATH"; then
-- AC_MSG_RESULT([not found])
-- AC_MSG_ERROR([Please reinstall the hdrhistogram library])
-- fi
-+ if test -z "$HDRHISTOGRAM_PATH"; then
-+ AC_MSG_RESULT([not found])
-+ AC_MSG_ERROR([Please reinstall the hdrhistogram library])
-+ fi
-
-- PHP_ADD_INCLUDE($HDRHISTOGRAM_PATH/include)
--
-- LIBNAME=hdr_histogram
-- LIBSYMBOL=hdr_init
--
-- PHP_CHECK_LIBRARY($LIBNAME, $LIBSYMBOL,
-- [
-- PHP_ADD_LIBRARY_WITH_PATH($LIBNAME, $HDRHISTOGRAM_PATH/$PHP_LIBDIR, HDRHISTOGRAM_SHARED_LIBADD)
-- AC_DEFINE(HAVE_HDRHISTOGRAM,1,[ ])
-- ],[
-- AC_MSG_ERROR([wrong hdrhistogram lib version or lib not found])
-- ],[
-- -L$HDRHISTOGRAM_PATH/$PHP_LIBDIR
-- ]
-- )
-+ PHP_ADD_INCLUDE($HDRHISTOGRAM_PATH/include)
-+
-+ LIBNAME=hdr_histogram
-+ LIBSYMBOL=hdr_init
-+
-+ PHP_CHECK_LIBRARY($LIBNAME, $LIBSYMBOL,
-+ [
-+ PHP_ADD_LIBRARY_WITH_PATH($LIBNAME, $HDRHISTOGRAM_PATH/$PHP_LIBDIR, HDRHISTOGRAM_SHARED_LIBADD)
-+ AC_DEFINE(HAVE_HDRHISTOGRAM,1,[ ])
-+ ],[
-+ AC_MSG_ERROR([wrong hdrhistogram lib version or lib not found])
-+ ],[
-+ -L$HDRHISTOGRAM_PATH/$PHP_LIBDIR
-+ ]
-+ )
-+ fi
-
- PHP_SUBST(HDRHISTOGRAM_SHARED_LIBADD)
-
-diff --git a/hdrhistogram.c b/hdrhistogram.c
-index d3099a1..5a60a53 100644
---- a/hdrhistogram.c
-+++ b/hdrhistogram.c
-@@ -117,17 +117,17 @@ PHP_MINFO_FUNCTION(hdrhistogram)
- PHP_FUNCTION(hdr_init)
- {
- struct hdr_histogram *hdr;
-- long lowest_trackable_value, highest_trackable_value, significant_figures;
-+ long lowest_discernible_value, highest_trackable_value, significant_figures;
- int res;
-
- if (zend_parse_parameters(ZEND_NUM_ARGS(), "lll",
-- &lowest_trackable_value, &highest_trackable_value, &significant_figures) == FAILURE) {
-+ &lowest_discernible_value, &highest_trackable_value, &significant_figures) == FAILURE) {
- php_error_docref(NULL, E_WARNING, "Invalid arguments passed.");
-
- RETURN_FALSE;
- }
-
-- res = hdr_init(lowest_trackable_value, highest_trackable_value, significant_figures, &hdr);
-+ res = hdr_init(lowest_discernible_value, highest_trackable_value, significant_figures, &hdr);
-
- if (res == 0) {
- hdr_register_hdr_resource(return_value, hdr);
-@@ -342,8 +342,11 @@ PHP_FUNCTION(hdr_add)
- hdra = hdr_fetch_resource(a, return_value);
- hdrb = hdr_fetch_resource(b, return_value);
-
-+#ifdef HAVE_HDRHISTOGRAM_0_11_4
-+ res = hdr_init(hdra->lowest_discernible_value, hdra->highest_trackable_value, hdra->significant_figures, &hdr_new);
-+#else
- res = hdr_init(hdra->lowest_trackable_value, hdra->highest_trackable_value, hdra->significant_figures, &hdr_new);
--
-+#endif
- hdr_add(hdr_new, hdra);
- hdr_add(hdr_new, hdrb);
-
-@@ -477,9 +480,16 @@ PHP_FUNCTION(hdr_export)
-
- array_init(return_value);
-
-+
-+#ifdef HAVE_HDRHISTOGRAM_0_11_4
-+ if (hdr->lowest_discernible_value > 1) {
-+ add_assoc_long(return_value, "ltv", hdr->lowest_discernible_value);
-+ }
-+#else
- if (hdr->lowest_trackable_value > 1) {
- add_assoc_long(return_value, "ltv", hdr->lowest_trackable_value);
- }
-+#endif
- if (hdr->highest_trackable_value != 60000) {
- add_assoc_long(return_value, "htv", hdr->highest_trackable_value);
- }
-@@ -513,7 +523,7 @@ PHP_FUNCTION(hdr_import)
- {
- struct hdr_histogram *hdr;
- zval *import, *value, *item;
-- long lowest_trackable_value, highest_trackable_value, significant_figures;
-+ long lowest_discernible_value, highest_trackable_value, significant_figures;
- int res, count;
- zend_ulong i, bucket, skipped;
-
-@@ -522,12 +532,12 @@ PHP_FUNCTION(hdr_import)
- }
-
- if (value = hdr_hash_find(Z_ARRVAL_P(import), "ltv", 4)) {
-- lowest_trackable_value = Z_LVAL_P(value);
-+ lowest_discernible_value = Z_LVAL_P(value);
- } else {
-- lowest_trackable_value = 1;
-+ lowest_discernible_value = 1;
- }
-
-- if (lowest_trackable_value <= 0) {
-+ if (lowest_discernible_value <= 0) {
- php_error_docref(NULL, E_WARNING, "lowest_trackable_value (ltv) must be >= 1.");
- RETURN_FALSE;
- }
-@@ -560,7 +570,7 @@ PHP_FUNCTION(hdr_import)
- skipped = 0;
- }
-
-- if (skipped < 0 || lowest_trackable_value < 1 || highest_trackable_value < lowest_trackable_value || significant_figures < 1) {
-+ if (skipped < 0 || lowest_discernible_value < 1 || highest_trackable_value < lowest_discernible_value || significant_figures < 1) {
- php_error_docref(NULL, E_WARNING, "Invalid values for ltv, htv, sf or sk keys given.");
- RETURN_FALSE;
- }
-@@ -570,7 +580,7 @@ PHP_FUNCTION(hdr_import)
- // version 3 format
- if (value != NULL && Z_TYPE_P(value) == IS_ARRAY) {
- count = zend_hash_num_elements(Z_ARRVAL_P(value));
-- res = hdr_init(lowest_trackable_value, highest_trackable_value, significant_figures, &hdr);
-+ res = hdr_init(lowest_discernible_value, highest_trackable_value, significant_figures, &hdr);
-
- if (res == 0) {
- hdr_register_hdr_resource(return_value, hdr);
-@@ -612,7 +622,7 @@ PHP_FUNCTION(hdr_import)
- if (value != NULL && Z_TYPE_P(value) == IS_ARRAY) {
- count = zend_hash_num_elements(Z_ARRVAL_P(value));
-
-- res = hdr_init(lowest_trackable_value, highest_trackable_value, significant_figures, &hdr);
-+ res = hdr_init(lowest_discernible_value, highest_trackable_value, significant_figures, &hdr);
-
- if (res == 0) {
- hdr_register_hdr_resource(return_value, hdr);
-@@ -655,7 +665,7 @@ PHP_FUNCTION(hdr_import)
-
- // version 2 format
- if (value != NULL && Z_TYPE_P(value) == IS_ARRAY) {
-- res = hdr_init(lowest_trackable_value, highest_trackable_value, significant_figures, &hdr);
-+ res = hdr_init(lowest_discernible_value, highest_trackable_value, significant_figures, &hdr);
-
- if (res == 0) {
- hdr_register_hdr_resource(return_value, hdr);
-
-From 82a52859195755097cf3437f957ded89834533c0 Mon Sep 17 00:00:00 2001
-From: Remi Collet <remi@remirepo.net>
-Date: Thu, 27 Apr 2023 09:01:20 +0200
-Subject: [PATCH 2/3] improve phpinfo with extension and library version (from
- 0.11.7)
-
----
- config.m4 | 3 +++
- hdrhistogram.c | 11 +++++++++++
- 2 files changed, 14 insertions(+)
-
-diff --git a/config.m4 b/config.m4
-index 729a038..955d15c 100644
---- a/config.m4
-+++ b/config.m4
-@@ -12,6 +12,9 @@ if test "$PHP_HDRHISTOGRAM" != "no"; then
- LIBHDR_LIBDIR=`$PKG_CONFIG hdr_histogram --libs`
- LIBHDR_VERSON=`$PKG_CONFIG hdr_histogram --modversion`
- AC_MSG_RESULT(found $LIBHDR_VERSON)
-+ if $PKG_CONFIG hdr_histogram --atleast-version 0.11.7; then
-+ AC_DEFINE(HAVE_HDRHISTOGRAM_0_11_7,1,[ ])
-+ fi
- if $PKG_CONFIG hdr_histogram --atleast-version 0.11.4; then
- AC_DEFINE(HAVE_HDRHISTOGRAM_0_11_4,1,[ ])
- fi
-diff --git a/hdrhistogram.c b/hdrhistogram.c
-index 5a60a53..fff37db 100644
---- a/hdrhistogram.c
-+++ b/hdrhistogram.c
-@@ -3,8 +3,12 @@
- #endif
-
- #include "php.h"
-+#include "ext/standard/info.h"
- #include "hdr/hdr_histogram.h"
- #include "hdr/hdr_histogram_log.h"
-+#ifdef HAVE_HDRHISTOGRAM_0_11_7
-+#include "hdr/hdr_histogram_version.h"
-+#endif
- #include "php_hdrhistogram.h"
-
- #if PHP_VERSION_ID < 80000
-@@ -112,6 +116,13 @@ PHP_RSHUTDOWN_FUNCTION(hdrhistogram)
-
- PHP_MINFO_FUNCTION(hdrhistogram)
- {
-+ php_info_print_table_start();
-+
-+ php_info_print_table_row(2, "hdrhistogram", "enabled");
-+ php_info_print_table_row(2, "Extension version", HDR_VERSION);
-+#ifdef HDR_HISTOGRAM_VERSION
-+ php_info_print_table_row(2, "Library version", HDR_HISTOGRAM_VERSION);
-+#endif
- }
-
- PHP_FUNCTION(hdr_init)
-
-From 21e89822c9c98ede68c0a16ece78c3323788888a Mon Sep 17 00:00:00 2001
-From: Remi Collet <remi@remirepo.net>
-Date: Thu, 27 Apr 2023 09:03:59 +0200
-Subject: [PATCH 3/3] use normalized macro name
-
----
- hdrhistogram.c | 6 +++---
- php_hdrhistogram.h | 2 +-
- 2 files changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/hdrhistogram.c b/hdrhistogram.c
-index fff37db..0a241be 100644
---- a/hdrhistogram.c
-+++ b/hdrhistogram.c
-@@ -67,7 +67,7 @@ zend_module_entry hdrhistogram_module_entry = {
- PHP_RINIT(hdrhistogram), /* Request init callback */
- PHP_RSHUTDOWN(hdrhistogram), /* Request shutdown callback */
- PHP_MINFO(hdrhistogram), /* Module info callback */
-- HDR_VERSION,
-+ PHP_HDR_HISTOGRAM_VERSION,
- STANDARD_MODULE_PROPERTIES
- };
-
-@@ -118,8 +118,8 @@ PHP_MINFO_FUNCTION(hdrhistogram)
- {
- php_info_print_table_start();
-
-- php_info_print_table_row(2, "hdrhistogram", "enabled");
-- php_info_print_table_row(2, "Extension version", HDR_VERSION);
-+ php_info_print_table_row(2, "hdrhistogram support", "enabled");
-+ php_info_print_table_row(2, "Extension version", PHP_HDR_HISTOGRAM_VERSION);
- #ifdef HDR_HISTOGRAM_VERSION
- php_info_print_table_row(2, "Library version", HDR_HISTOGRAM_VERSION);
- #endif
-diff --git a/php_hdrhistogram.h b/php_hdrhistogram.h
-index 68fd9ae..894b224 100644
---- a/php_hdrhistogram.h
-+++ b/php_hdrhistogram.h
-@@ -5,7 +5,7 @@
-
- extern zend_module_entry hdrhistogram_module_entry;
- #define phpext_hdrhistogram_ptr &hdrhistogram_module_entry
--#define HDR_VERSION "0.4.2"
-+#define PHP_HDR_HISTOGRAM_VERSION "0.4.2"
-
- PHP_MINIT_FUNCTION(hdrhistogram);
- PHP_MSHUTDOWN_FUNCTION(hdrhistogram);
diff --git a/php-pecl-hdr-histogram.spec b/php-pecl-hdr-histogram.spec
index b1730d2..3e8b3d5 100644
--- a/php-pecl-hdr-histogram.spec
+++ b/php-pecl-hdr-histogram.spec
@@ -1,34 +1,32 @@
# remirepo spec file for php-pecl-hdr-histogram
#
-# Copyright (c) 2016-2023 Remi Collet
+# Copyright (c) 2016-2024 Remi Collet
# License: CC-BY-SA-4.0
# http://creativecommons.org/licenses/by-sa/4.0/
#
# Please, preserve the changelog entries
#
-%if 0%{?scl:1}
-%scl_package php-pecl-hdr-histogram
-%endif
-%bcond_without tests
+%{?scl:%scl_package php-pecl-hdr-histogram}
+
+%bcond_without tests
-%global with_zts 0%{!?_without_zts:%{?__ztsphp:1}}
-%global proj_name hdr_histogram
-%global pecl_name hdrhistogram
-%global ini_name 40-%{pecl_name}.ini
+%global with_zts 0%{!?_without_zts:%{?__ztsphp:1}}
+%global proj_name hdr_histogram
+%global pecl_name hdrhistogram
+%global ini_name 40-%{pecl_name}.ini
+%global sources %{proj_name}-%{version}
+%global _configure ../%{sources}/configure
Summary: PHP extension wrapper for the C hdrhistogram API
Name: %{?scl_prefix}php-pecl-hdr-histogram
-Version: 0.4.2
-Release: 3%{?dist}%{!?scl:%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}}
-License: MIT
+Version: 0.5.0
+Release: 0%{?dist}%{!?scl:%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}}
+License: BSD-2-Clause
Group: Development/Languages
URL: https://pecl.php.net/package/%{proj_name}
-Source: https://pecl.php.net/get/%{proj_name}-%{version}.tgz
-
-Patch0: %{proj_name}-arginfo.patch
-Patch1: %{proj_name}-lib0114.patch
+Source: https://pecl.php.net/get/%{sources}.tgz
BuildRequires: make
BuildRequires: %{?dtsprefix}gcc
@@ -40,7 +38,6 @@ BuildRequires: HdrHistogram_c6php-devel >= 0.11.7
Requires: %{?scl_prefix}php(zend-abi) = %{php_zend_api}
Requires: %{?scl_prefix}php(api) = %{php_core_api}
-%{?_sclreq:Requires: %{?scl_prefix}runtime%{?_sclreq}%{?_isa}}
Provides: %{?scl_prefix}php-%{pecl_name} = %{version}
Provides: %{?scl_prefix}php-%{pecl_name}%{?_isa} = %{version}
@@ -63,17 +60,13 @@ Package built for PHP %(%{__php} -r 'echo PHP_MAJOR_VERSION.".".PHP_MINOR_VERSIO
%prep
%setup -c -q
-mv %{proj_name}-%{version} NTS
# Remove test file to avoid regsitration
sed -e 's/role="test"/role="src"/' \
%{?_licensedir:-e '/LICENSE/s/role="doc"/role="src"/' } \
-i package.xml
-cd NTS
-%patch -P0 -p1 -b .pr13
-%patch -P1 -p1 -b .pr15
-
+cd %{sources}
# Check upstream version (often broken)
extver=$(sed -n '/#define PHP_HDR_HISTOGRAM_VERSION/{s/.* "//;s/".*$//;p}' php_hdrhistogram.h)
if test "x${extver}" != "x%{version}"; then
@@ -87,25 +80,26 @@ cat << 'EOF' | tee %{ini_name}
extension=%{pecl_name}.so
EOF
-cp -pr NTS ZTS
+mkdir NTS ZTS
%build
%{?dtsenable}
-cd NTS
-%{_bindir}/phpize
+cd %{sources}
+%{__phpize}
+
+cd ../NTS
%configure \
--with-libdir=%{_lib} \
- --with-php-config=%{_bindir}/php-config
+ --with-php-config=%{__phpconfig}
make %{?_smp_mflags}
%if %{with_zts}
cd ../ZTS
-%{_bindir}/zts-phpize
%configure \
--with-libdir=%{_lib} \
- --with-php-config=%{_bindir}/zts-php-config
+ --with-php-config=%{__ztsphpconfig}
make %{?_smp_mflags}
%endif
@@ -127,14 +121,14 @@ install -Dpm644 %{ini_name} %{buildroot}%{php_ztsinidir}/%{ini_name}
%endif
# Documentation
-cd NTS
+cd %{sources}
for i in $(grep 'role="doc"' ../package.xml | sed -e 's/^.*name="//;s/".*$//')
do install -Dpm 644 $i %{buildroot}%{pecl_docdir}/%{proj_name}/$i
done
%check
-cd NTS
+cd %{sources}
OPT="-n"
[ -f %{php_extdir}/json.so ] && OPT="$OPT -d extension=json.so"
@@ -152,7 +146,6 @@ REPORT_EXIT_STATUS=1 \
%endif
%if %{with_zts}
-cd ../ZTS
: Minimal load test for ZTS extension
%{__ztsphp} --no-php-ini \
--define extension=%{buildroot}%{php_ztsextdir}/%{pecl_name}.so \
@@ -189,7 +182,7 @@ fi
%files
-%{?_licensedir:%license NTS/LICENSE}
+%{?_licensedir:%license %{sources}/LICENSE}
%doc %{pecl_docdir}/%{proj_name}
%{pecl_xmldir}/%{name}.xml
@@ -203,6 +196,13 @@ fi
%changelog
+* Tue Apr 23 2024 Remi Collet <remi@remirepo.net> - 0.5.0-0
+- test build for upcoming 0.5.0
+- drop patches merged upstream
+
+* Fri Sep 1 2023 Remi Collet <remi@remirepo.net> - 0.4.2-4
+- build out of sources tree
+
* Thu Apr 27 2023 Remi Collet <remi@remirepo.net> - 0.4.2-3
- improved patch for libhdr_histogram 0.11.7