Skip to content

Add typenum-1.18.0 benchmark #2088

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Apr 30, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
9 changes: 9 additions & 0 deletions collector/compile-benchmarks/0-add-fn.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
diff --git a/typenum-1.18.0/src/lib.rs b/typenum-1.18.0/src/lib.rs
index f7a1241a..13582037 100644
--- a/typenum-1.18.0/src/lib.rs
+++ b/typenum-1.18.0/src/lib.rs
@@ -173,3 +173,4 @@ mod sealed {
impl Sealed for ATerm {}
impl<V, A> Sealed for TArr<V, A> {}
}
+fn foo() { let a = 5; }
2 changes: 2 additions & 0 deletions collector/compile-benchmarks/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,8 @@ They mostly consist of real-world crates.
ecosystem.
- **typenum-1.17.0**: A library that encodes integer computation within the trait system. Serves as
a stress test for the trait solver, but at the same time it is also a very popular crate.
- **typenum-1.18.0**: A library that encodes integer computation within the trait system. Serves as
a stress test for the trait solver, but at the same time it is also a very popular crate.
- **unicode-normalization-0.1.19**: Unicode character composition and decomposition
utilities. Uses huge `match` statements that stress the compiler in unusual
ways.
Expand Down
5 changes: 5 additions & 0 deletions collector/compile-benchmarks/REUSE.toml
Original file line number Diff line number Diff line change
Expand Up @@ -279,6 +279,11 @@ path = "typenum-1.17.0/**"
SPDX-FileCopyrightText = "typenum contributors"
SPDX-License-Identifier = "MIT OR Apache-2.0"

[[annotations]]
path = "typenum-1.18.0/**"
SPDX-FileCopyrightText = "typenum contributors"
SPDX-License-Identifier = "MIT OR Apache-2.0"

[[annotations]]
path = "ucd/**"
SPDX-FileCopyrightText = "ucd contributors"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"git": {
"sha1": "67584b536d97c5503fa0f8d6ea1162eb4d9b8383"
},
"path_in_vcs": ""
}
1 change: 1 addition & 0 deletions collector/compile-benchmarks/typenum-1.18.0/.envrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
use flake
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
on:
push:
branches:
- main
pull_request:
branches:
- main

name: CI

jobs:
all-succeeded:
name: All Succeeded
if: always()
runs-on: ubuntu-latest
needs:
- test-linux
- test-non-linux
- lint

steps:
- name: Check if all jubs succeeded
uses: re-actors/alls-green@release/v1
with:
jobs: ${{ toJSON(needs) }}

test-linux:
name: Test Linux
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
rust:
- stable
- beta
- nightly
mb_const_generics:
- ""
- "--features const-generics"
target:
- x86_64
- i686
- sparc64
include:
- mb_const_generics: ""
rust: 1.37.0
target: x86_64
steps:
- uses: actions/checkout@v3
- if: matrix.rust == '1.37.0'
# Rust 1.37 doesn't like modern lock files :(
run: rm Cargo.lock
- uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.rust }}
- uses: actions-rs/cargo@v1
with:
use-cross: ${{ matrix.target != 'x86_64' }}
command: test
args: --verbose --features "strict" ${{ matrix.mb_const_generics }} --target ${{ matrix.target }}-unknown-linux-gnu
- uses: actions-rs/cargo@v1
with:
use-cross: ${{ matrix.target != 'x86_64' }}
command: doc
args: --features "strict" ${{ matrix.mb_const_generics }} --target ${{ matrix.target }}-unknown-linux-gnu

test-non-linux:
name: Test non-Linux
runs-on: ${{ matrix.os }}
strategy:
matrix:
os:
- macos-latest
- windows-latest
rust:
- stable
mb_const_generics:
- ""
- "--features const-generics"
steps:
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.rust }}
- uses: extractions/setup-just@v2
- run: just test ${{ matrix.mb_const_generics }}

lint:
name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@nightly
with:
components: rustfmt, clippy
- uses: extractions/setup-just@v2
- run: just lint

test-generated:
name: Test Generated
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@stable
- uses: extractions/setup-just@v2
- run: just gen
- run: git diff --exit-code
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
on:
push:
tags:
- 'v*'

name: Publish

jobs:
release:
name: GitHub Release
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: marvinpinto/action-automatic-releases@latest
with:
repo_token: "${{ secrets.GITHUB_TOKEN }}"
prerelease: false

publish:
name: Crates.io Publish
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: dtolnay/rust-toolchain@stable
- uses: katyo/publish-crates@v1
with:
registry-token: ${{ secrets.CARGO_REGISTRY_TOKEN }}
2 changes: 2 additions & 0 deletions collector/compile-benchmarks/typenum-1.18.0/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
target
.direnv/
125 changes: 125 additions & 0 deletions collector/compile-benchmarks/typenum-1.18.0/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
# Changelog

This project follows semantic versioning.

The MSRV (Minimum Supported Rust Version) is 1.37.0, and typenum is tested
against this Rust version.

### Unreleased

### 1.18.0 (2025-02-17)
- [changed] Remove build scripts; instead check-in the built code (PR #219)
- [added] Constants for 3600 (PR #220)
- [added] Elixir-style syntax for `tarr!` macro (PR #214)
- [added] `FoldAdd` and `FoldMul` to get the sum/product of an array (PR #209)

### 1.17.0 (2023-09-15)
- [removed] Remove `force_unix_path_separator` feature, make it the default
- [added] docs.rs metadata and cfg options
- [added] Playground metadata

### 1.16.0 (2022-12-05)
- [added] `const INT` field to the `ToInt` trait.
- [added] `const-generics` field with `U<N>` mapping where `N` is a const generic.

### 1.15.0 (2021-12-25)
- [fixed] Cross-compilation issue due to doing math in build script. (PR #177)
- [added] New feature `scale_info` for using inside
[Substrate](https://github.com/paritytech/substrate.git)-based runtimes (PR
#175)

### 1.14.0 (2021-09-01)
- [changed] Sealed all marker traits. Documentation already stated that these
should not be implemented outside the crate, so this is not considered a
breaking change.

### 1.13.0 (2021-03-12)
- [changed] MSRV from 1.22.0 to 1.37.0.
- [fixed] `op` macro with 2018 edition import.
- [changed] Allowed calling `assert_type_eq` and `assert_type` at top level.
- [added] Marker trait `Zero` for `Z0`, `U0`, and `B0`.
- [added] Implementation of `Pow` trait for f32 and f64 with negative exponent.
- [added] Trait `ToInt`.

### 1.12.0 (2020-04-13)
- [added] Feature `force_unix_path_separator` to support building without Cargo.
- [added] Greatest common divisor operator `Gcd` with alias `Gcf`.
- [added] `gcd` to the `op!` macro.
- [changed] Added `Copy` bound to `Rhs` of `Mul<Rhs>` impl for `<TArr<V, A>`.
- [changed] Added `Copy` bound to `Rhs` of `Div<Rhs>` impl for `<TArr<V, A>`.
- [changed] Added `Copy` bound to `Rhs` of `PartialDiv<Rhs>` impl for `<TArr<V, A>`.
- [changed] Added `Copy` bound to `Rhs` of `Rem<Rhs>` impl for `<TArr<V, A>`.
- [fixed] Make all functions #[inline].

### 1.11.2 (2019-08-26)
- [fixed] Cross compilation from Linux to Windows.

### 1.11.1 (2019-08-25)
- [fixed] Builds on earlier Rust builds again and added Rust 1.22.0 to Travis to
prevent future breakage.

### 1.11.0 (2019-08-25)
- [added] Integer `log2` to the `op!` macro.
- [added] Integer binary logarithm operator `Logarithm2` with alias `Log2`.
- [changed] Removed `feature(i128_type)` when running with the `i128`
feature. Kept the feature flag. for typenum to maintain compatibility with
old Rust versions.
- [added] Integer `sqrt` to the `op!` macro.
- [added] Integer square root operator `SquareRoot` with alias `Sqrt`.
- [fixed] Bug with attempting to create U1024 type alias twice.

### 1.10.0 (2018-03-11)
- [added] The `PowerOfTwo` marker trait.
- [added] Associated constants for `Bit`, `Unsigned`, and `Integer`.

### 1.9.0 (2017-05-14)
- [added] The `Abs` type operator and corresponding `AbsVal` alias.
- [added] The feature `i128` that enables creating 128-bit integers from
typenums.
- [added] The `assert_type!` and `assert_type_eq!` macros.
- [added] Operators to the `op!` macro, including those performed by `cmp!`.
- [fixed] Bug in `op!` macro involving functions and convoluted expressions.
- [deprecated] The `cmp!` macro.

### 1.8.0 (2017-04-12)
- [added] The `op!` macro for conveniently performing type-level operations.
- [added] The `cmp!` macro for conveniently performing type-level comparisons.
- [added] Some comparison type-operators that are used by the `cmp!` macro.

### 1.7.0 (2017-03-24)
- [added] Type operators `Min` and `Max` with accompanying aliases `Minimum` and
`Maximum`

### 1.6.0 (2017-02-24)
- [fixed] Bug in `Array` division.
- [fixed] Bug where `Rem` would sometimes exit early with the wrong answer.
- [added] `PartialDiv` operator that performs division as a partial function --
it's defined only when there is no remainder.

### 1.5.2 (2017-02-04)
- [fixed] Bug between `Div` implementation and type system.

### 1.5.1 (2016-11-08)
- [fixed] Expanded implementation of `Pow` for primitives.

### 1.5.0 (2016-11-03)
- [added] Functions to the `Pow` and `Len` traits. This is *technically* a
breaking change, but it would only break someone's code if they have a custom
impl for `Pow`. I would be very surprised if that is anyone other than me.

### 1.4.0 (2016-10-29)
- [added] Type-level arrays of type-level integers. (PR #66)
- [added] The types in this crate are now instantiable. (Issue #67, PR #68)

### 1.3.1 (2016-03-31)
- [fixed] Bug with recent nightlies.

### 1.3.0 (2016-02-07)
- [changed] Removed dependency on libstd. (Issue #53, PR #55)
- [changed] Reorganized module structure. (PR #57)

### 1.2.0 (2016-01-03)
- [added] This change log!
- [added] Convenience type aliases for operators. (Issue #48, PR #50)
- [added] Types in this crate now derive all possible traits. (Issue #42, PR
#51)
Loading
Loading