Skip to content

Commit 8f3c460

Browse files
Merge branch 'develop' into feat/cexp
2 parents 184d2fb + 5945917 commit 8f3c460

7,799 files changed

Lines changed: 592676 additions & 39815 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.github/workflows/process_metadata.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ jobs:
117117
env:
118118
METADATA: ${{ steps.extract-metadata.outputs.metadata }}
119119
run: |
120-
inputs=$(echo "$METADATA" | jq -c '.[] | select(.type | contains("workflow_dispatch"))')
120+
inputs=$(echo "$METADATA" | jq -c '.[] | select((.type // "") | contains("workflow_dispatch"))')
121121
if [ -n "$inputs" ]; then
122122
name=$(echo $inputs | jq -r '.name')
123123
inputs=$(echo $inputs | jq -c 'del(.type, .name, .author, .id, .url) | map_values(tostring)')

‎.github/workflows/random_benchmarks.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ jobs:
8686
- name: 'Run JavaScript and native add-on benchmarks'
8787
run: |
8888
make benchmark-random-javascript RANDOM_SELECTION_SIZE=50 BUILD_ADDONS=1
89-
timeout-minutes: 60
89+
timeout-minutes: 90
9090

9191
# Install Cephes dependencies (required by C benchmarks which compare against the Cephes math library; accounting for possible network failures when downloading):
9292
- name: 'Install Cephes dependencies'

‎.github/workflows/scripts/check_duplicate_prs/run‎

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -255,14 +255,12 @@ main() {
255255
echo "Processing PRs for issue references..."
256256
debug_log "Starting to process $total_prs PRs for issue references"
257257

258-
# Process PRs one by one...
258+
# Process PRs one by one, streaming the list through a single `jq` invocation in order to avoid re-parsing the entire list once per PR...
259259
processed_count=0
260260

261-
for ((i=0; i<total_prs; i++)); do
262-
pr=$(echo "$open_prs" | jq -c ".[$i]")
263-
261+
while IFS= read -r pr; do
264262
if [ -z "$pr" ] || [ "$pr" = "null" ]; then
265-
debug_log "Warning: Empty PR data at index $i"
263+
debug_log "Warning: Empty PR data"
266264
continue
267265
fi
268266

@@ -300,7 +298,7 @@ main() {
300298
issue_prs_values[index]="${issue_prs_values[index]} $pr_number"
301299
fi
302300
done
303-
done
301+
done < <(echo "$open_prs" | jq -c '.[]')
304302

305303
debug_log "Finished processing all PRs for issue references"
306304
debug_log "Found ${#issue_prs_keys[@]} unique issues referenced in PRs"

‎.github/workflows/scripts/run_affected_benchmarks/run‎

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -129,20 +129,20 @@ main() {
129129
fi
130130
done
131131

132-
# Find all benchmark files in package directories:
132+
# Find all benchmark files in package directories (note: benchmark discovery is intentionally scoped to each package's own `benchmark` directory so that changes to a namespace package do not trigger benchmarks for that namespace's sub-packages):
133133
js_bench_files=""
134134
for dir in ${directories}; do
135-
if [ -d "${dir}" ]; then
136-
files=$(find "${dir}" -maxdepth 3 -wholename '**/benchmark/benchmark*.js' | grep -v '/fixtures/' | sort -u | tr '\n' ' ') || true
135+
if [ -d "${dir}/benchmark" ]; then
136+
files=$(find "${dir}/benchmark" -name 'benchmark*.js' | grep -v '/fixtures/' | sort -u | tr '\n' ' ') || true
137137
js_bench_files="${js_bench_files} ${files}"
138138
fi
139139
done
140140
js_bench_files=$(echo "${js_bench_files}" | xargs)
141141

142142
# Run JS benchmarks:
143143
if [ -n "${js_bench_files}" ]; then
144-
# Invoke make in batches to avoid "Argument list too long" errors:
145-
printf '%s\n' ${js_bench_files} | xargs sh -c 'make benchmark-javascript-files FILES="$*"' _
144+
# Invoke make in batches, capped well under the 128KiB Linux single-argument limit, in order to avoid "Argument list too long" errors:
145+
printf '%s\n' ${js_bench_files} | xargs -s 40000 sh -c 'make benchmark-javascript-files FILES="$*"' _
146146
else
147147
echo 'No JavaScript benchmarks to run.' >&2
148148
fi
@@ -151,8 +151,8 @@ main() {
151151
echo "Finding C benchmark files in ${directories}..."
152152
c_bench_files=""
153153
for dir in ${directories}; do
154-
if [ -d "${dir}" ]; then
155-
files=$(find "${dir}" -maxdepth 5 \( -wholename '**/benchmark/c/benchmark*.c' -or -wholename '**/benchmark/c/**/benchmark*.c' \) -exec realpath {} \; | grep -v '/fixtures/' | sort -u | tr '\n' ' ') || true
154+
if [ -d "${dir}/benchmark/c" ]; then
155+
files=$(find "${dir}/benchmark/c" -name 'benchmark*.c' -exec realpath {} \; | grep -v '/fixtures/' | sort -u | tr '\n' ' ') || true
156156
c_bench_files="${c_bench_files} ${files}"
157157
fi
158158
done
@@ -161,8 +161,8 @@ main() {
161161
# If benchmarks requiring Cephes are found, install the Cephes library:
162162
c_cephes_makefiles=""
163163
for dir in ${directories}; do
164-
if [ -d "${dir}" ]; then
165-
files=$(find "${dir}" -maxdepth 5 -wholename '**/benchmark/c/**/Makefile' -exec grep -l 'CEPHES' {} + || true)
164+
if [ -d "${dir}/benchmark/c" ]; then
165+
files=$(find "${dir}/benchmark/c" -name 'Makefile' -exec grep -l 'CEPHES' {} + || true)
166166
c_cephes_makefiles="${c_cephes_makefiles} ${files}"
167167
fi
168168
done
@@ -173,8 +173,8 @@ main() {
173173
fi
174174

175175
if [ -n "${c_bench_files}" ]; then
176-
# Invoke make in batches to avoid "Argument list too long" errors:
177-
printf '%s\n' ${c_bench_files} | xargs sh -c 'make benchmark-c-files FILES="$*"' _
176+
# Invoke make in batches, capped well under the 128KiB Linux single-argument limit, in order to avoid "Argument list too long" errors:
177+
printf '%s\n' ${c_bench_files} | xargs -s 40000 sh -c 'make benchmark-c-files FILES="$*"' _
178178
else
179179
echo 'No C benchmarks to run.' >&2
180180
fi

‎.github/workflows/scripts/run_affected_tests/run‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -168,8 +168,8 @@ main() {
168168
files=$(echo "${files}" | grep -v '/fixtures/') || true
169169

170170
if [[ -n "${files}" ]]; then
171-
# Invoke make in batches to avoid "Argument list too long" errors:
172-
printf '%s\n' ${files} | xargs sh -c 'make test-javascript-files-min FILES="$*"' _
171+
# Invoke make in batches, capped well under the 128KiB Linux single-argument limit, in order to avoid "Argument list too long" errors:
172+
printf '%s\n' ${files} | xargs -s 40000 sh -c 'make test-javascript-files-min FILES="$*"' _
173173
fi
174174

175175
cleanup

‎.github/workflows/scripts/run_tests_coverage/run‎

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -138,12 +138,17 @@ main() {
138138
exit 0
139139
fi
140140

141-
mkdir -p artifacts
142141
coverage=''
143142
for package in ${directories}; do
144143
# For each package, extract coverage values from the respective coverage report:
145144
pkg=$(echo "$package" | sed -E 's/^.*stdlib\///')
146145

146+
# Skip packages which do not have a test directory, as `make test-javascript-cov` fails when a `TESTS_FILTER` matches zero files:
147+
if [ ! -d "lib/node_modules/@stdlib/${pkg}/test" ]; then
148+
echo "WARNING: No test directory found for package '${pkg}'. Skipping..." >&2
149+
continue
150+
fi
151+
147152
if [ -f "lib/node_modules/@stdlib/${pkg}/binding.gyp" ]; then
148153
NODE_ADDONS_PATTERN="${pkg}" make install-node-addons
149154
fi
@@ -195,10 +200,14 @@ main() {
195200
rm -rf reports/coverage/lcov-report/*
196201
done
197202

198-
# Format coverage as Markdown table row:
199-
table_body=$(echo "$coverage" | sed -e 's/,/|/g; s/"/ /g; s/\[/|/g; s/\]/|/g')
200-
table_header="| Package | Statements | Branches | Functions | Lines |\n| --------- | ------------ | ---------- | ----------- | ----- |"
201-
table="${table_header}${table_body}"
203+
# Format coverage as a Markdown table row, unless every changed package was skipped (e.g., no package had a test directory):
204+
if [ -z "$coverage" ]; then
205+
table=''
206+
else
207+
table_body=$(echo "$coverage" | sed -e 's/,/|/g; s/"/ /g; s/\[/|/g; s/\]/|/g')
208+
table_header="| Package | Statements | Branches | Functions | Lines |\n| --------- | ------------ | ---------- | ----------- | ----- |"
209+
table="${table_header}${table_body}"
210+
fi
202211

203212
echo "table=$table" >> "$GITHUB_OUTPUT"
204213

‎.rtlintrc‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
"@stdlib/_tools/repl-txt/rules/interface-spacing": [ "error", 2 ],
77
"@stdlib/_tools/repl-txt/rules/line-length": [ "error", 80 ],
88
"@stdlib/_tools/repl-txt/rules/match-signature": "error",
9+
"@stdlib/_tools/repl-txt/rules/no-redeclare": "error",
910
"@stdlib/_tools/repl-txt/rules/resolvable-aliases": "warn",
1011
"@stdlib/_tools/repl-txt/rules/section-order": "error",
1112
"@stdlib/_tools/repl-txt/rules/section-heading-style": "error",

‎CORE_CONTRIBUTORS.md‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ For information about the governance of the stdlib project, see [GOVERNANCE.md][
3333
- [aman-095][aman-bhansali-github] - **Aman Bhansali** &lt;[amanbhansali65@gmail.com][aman-bhansali-email]&gt; (he/him)
3434
- [aayush0325][aayush-khanna-github] - **Aayush Khanna** &lt;[aayushiitbhu23@gmail.com][aayush-khanna-email]&gt; (he/him)
3535
- [anandkaranubc][karan-anand-github] - **Karan Anand** &lt;[anandkarancompsci@gmail.com][karan-anand-email]&gt; (he/him)
36+
- [gururaj1512][gururaj-gurram-github] - **Gururaj Gurram** &lt;[gururajgurram1512@gmail.com][gururaj-gurram-email]&gt; (he/him)
3637

3738
<details>
3839
<summary>Emeriti</summary>
@@ -77,6 +78,10 @@ For information about the governance of the stdlib project, see [GOVERNANCE.md][
7778

7879
[karan-anand-email]: mailto:anandkarancompsci@gmail.com
7980

81+
[gururaj-gurram-github]: https://github.com/gururaj1512
82+
83+
[gururaj-gurram-email]: mailto:gururajgurram1512@gmail.com
84+
8085
</section>
8186

8287
<!-- /.links -->
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
---
2+
type: amend-message
3+
---
4+
feat: add C implementation for `stats/base/dists/studentized-range/cdf`
5+
6+
PR-URL: https://github.com/stdlib-js/stdlib/pull/10106
7+
Closes: https://github.com/stdlib-js/stdlib/issues/3887
8+
Co-authored-by: Neeraj Pathak <neerajrpathak710@gmail.com>
9+
Co-authored-by: Philipp Burckhardt <pburckhardt@outlook.com>
10+
Reviewed-by: Philipp Burckhardt <pburckhardt@outlook.com>
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
---
2+
type: amend-message
3+
---
4+
fix: add missing `f` suffix in `constants/float32/ln-two`
5+
6+
PR-URL: https://github.com/stdlib-js/stdlib/pull/3110
7+
Ref: https://github.com/stdlib-js/stdlib/commit/893cb1b86ececb01085118705c19a842f70da511#r149027862
8+
Private-ref: https://github.com/stdlib-js/todo/issues/2288
9+
Reviewed-by: Athan Reines <kgryte@gmail.com>
10+
Signed-off-by: Gunj Joshi <gunjjoshi8372@gmail.com>

0 commit comments

Comments
 (0)