Skip to content

Commit b7f3273

Browse files
committed
Version 1.21.3
- Support for random number generator based on sm3: `RNG.sm3` - Improves documentation
1 parent 1e68c83 commit b7f3273

Some content is hidden

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

61 files changed

+1527
-1452
lines changed

.github/workflows/test.yml

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,27 +3,35 @@ name: Test
33
on:
44
workflow_dispatch:
55
push:
6-
branches: [master]
76
paths: ['**.dart', '**.yaml', '**.yml']
87
pull_request:
9-
branches: [master]
108
paths: ['**.dart', '**.yaml', '**.yml']
119

1210
jobs:
1311
test:
1412
strategy:
1513
matrix:
14+
os: [ubuntu-latest, macos-latest, windows-latest]
1615
sdk: ['stable', '2.14', 'beta']
1716
platform: ['vm', 'node']
18-
runs-on: ubuntu-latest
17+
runs-on: ${{ matrix.os }}
1918
steps:
2019
- uses: actions/checkout@v4
2120
- uses: dart-lang/setup-dart@v1
2221
with:
2322
sdk: ${{ matrix.sdk }}
2423

25-
- run: dart pub get
26-
- run: dart test -p ${{ matrix.platform }}
24+
- name: Install dependencies
25+
run: dart pub get
26+
27+
- name: Verify formatting
28+
run: dart format --output=none --set-exit-if-changed .
29+
30+
- name: Analyze project source
31+
run: dart analyze --fatal-infos
32+
33+
- name: Text on ${{ matrix.platform }}
34+
run: dart test -p ${{ matrix.platform }}
2735

2836
pana:
2937
if: github.repository == 'bitanon/hashlib'
@@ -32,8 +40,11 @@ jobs:
3240
- uses: actions/checkout@v4
3341
- uses: dart-lang/setup-dart@v1
3442

35-
- run: dart pub global activate pana
36-
- run: pana --exit-code-threshold 0
43+
- name: Install pana
44+
run: dart pub global activate pana
45+
46+
- name: Verify with pana
47+
run: pana --exit-code-threshold 0
3748

3849
coverage:
3950
if: github.repository == 'bitanon/hashlib'
@@ -44,7 +55,6 @@ jobs:
4455

4556
- name: Install global packages
4657
run: |
47-
dart pub global activate pana
4858
dart pub global activate coverage
4959
dart pub global activate cobertura
5060
dart pub global activate junitreport

BENCHMARK.md

Lines changed: 91 additions & 91 deletions
Large diffs are not rendered by default.

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
# 1.21.3
2+
3+
- Support for random number generator based on sm3: `RNG.sm3`
4+
- Improves documentation
5+
16
# 1.21.2
27

38
- Updates README.md

README.md

Lines changed: 93 additions & 95 deletions
Large diffs are not rendered by default.

analysis_options.yaml

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,15 @@ linter:
1010
rules:
1111
- camel_case_types
1212
- only_throw_errors
13-
- comment_references
14-
- library_annotations
15-
- invalid_case_patterns
16-
- combinators_ordering
1713
- always_declare_return_types
1814
- one_member_abstracts
1915
- cancel_subscriptions
2016
- avoid_unused_constructor_parameters
17+
# - comment_references
18+
# - library_annotations
19+
# - combinators_ordering
20+
# - invalid_case_patterns
21+
# - strict_top_level_inference
2122

2223
analyzer:
2324
exclude:

benchmark/benchmark.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ import 'xxhash.dart' as xxhash;
3838
IOSink sink = stdout;
3939
RandomAccessFile? raf;
4040

41-
void dump(message) {
42-
raf?.writeStringSync(message + '\n');
41+
void dump(String message) {
42+
raf?.writeStringSync('$message\n');
4343
stdout.writeln(message);
4444
}
4545

benchmark/random.dart

Lines changed: 131 additions & 131 deletions
Original file line numberDiff line numberDiff line change
@@ -1,131 +1,131 @@
1-
// Copyright (c) 2024, Sudipto Chandra
2-
// All rights reserved. Check LICENSE file for details.
3-
4-
import 'dart:math';
5-
6-
import 'package:hashlib/random.dart';
7-
8-
import '_base.dart';
9-
10-
const int _maxInt = 0xFFFFFFFF;
11-
12-
class SystemRandomBenchmark extends Benchmark {
13-
final random = HashlibRandom(RNG.system);
14-
SystemRandomBenchmark(int size, int iter) : super('system', size, iter);
15-
16-
@override
17-
void run() {
18-
for (int i = 0; i < size; ++i) {
19-
random.nextInt();
20-
}
21-
}
22-
}
23-
24-
class SecureRandomBenchmark extends Benchmark {
25-
final random = HashlibRandom(RNG.secure);
26-
SecureRandomBenchmark(int size, int iter) : super('secure', size, iter);
27-
28-
@override
29-
void run() {
30-
for (int i = 0; i < size; ++i) {
31-
random.nextInt();
32-
}
33-
}
34-
}
35-
36-
class KeccakRandomBenchmark extends Benchmark {
37-
final random = HashlibRandom(RNG.keccak);
38-
KeccakRandomBenchmark(int size, int iter) : super('keccak', size, iter);
39-
40-
@override
41-
void run() {
42-
for (int i = 0; i < size; ++i) {
43-
random.nextInt();
44-
}
45-
}
46-
}
47-
48-
class SHA256RandomBenchmark extends Benchmark {
49-
final random = HashlibRandom(RNG.sha256);
50-
SHA256RandomBenchmark(int size, int iter) : super('sha256', size, iter);
51-
52-
@override
53-
void run() {
54-
for (int i = 0; i < size; ++i) {
55-
random.nextInt();
56-
}
57-
}
58-
}
59-
60-
class SM3RandomBenchmark extends Benchmark {
61-
final random = HashlibRandom(RNG.sm3);
62-
SM3RandomBenchmark(int size, int iter) : super('sm3', size, iter);
63-
64-
@override
65-
void run() {
66-
for (int i = 0; i < size; ++i) {
67-
random.nextInt();
68-
}
69-
}
70-
}
71-
72-
class XXH64RandomBenchmark extends Benchmark {
73-
final random = HashlibRandom(RNG.xxh64);
74-
XXH64RandomBenchmark(int size, int iter) : super('xxh64', size, iter);
75-
76-
@override
77-
void run() {
78-
for (int i = 0; i < size; ++i) {
79-
random.nextInt();
80-
}
81-
}
82-
}
83-
84-
class RandomBenchmark extends Benchmark {
85-
final random = Random(56468882);
86-
RandomBenchmark(int size, int iter) : super('Random', size, iter);
87-
88-
@override
89-
void run() {
90-
for (int i = 0; i < size; ++i) {
91-
random.nextInt(_maxInt);
92-
}
93-
}
94-
}
95-
96-
class SystemSecureRandomBenchmark extends Benchmark {
97-
final random = Random.secure();
98-
SystemSecureRandomBenchmark(int size, int iter)
99-
: super('Random.secure', size, iter);
100-
101-
@override
102-
void run() {
103-
for (int i = 0; i < size; ++i) {
104-
random.nextInt(_maxInt);
105-
}
106-
}
107-
}
108-
109-
void main() {
110-
print('--------- Random ----------');
111-
final conditions = [
112-
[5 << 20, 10],
113-
[1 << 10, 5000],
114-
[10, 100000],
115-
];
116-
for (var condition in conditions) {
117-
int size = condition[0];
118-
int iter = condition[1];
119-
print('---- size: ${formatSize(size)} | iterations: $iter ----');
120-
RandomBenchmark(size, iter).measureDiff([
121-
SystemSecureRandomBenchmark(size, iter),
122-
SecureRandomBenchmark(size, iter),
123-
SystemRandomBenchmark(size, iter),
124-
KeccakRandomBenchmark(size, iter),
125-
SM3RandomBenchmark(size, iter),
126-
SHA256RandomBenchmark(size, iter),
127-
XXH64RandomBenchmark(size, iter),
128-
]);
129-
print('');
130-
}
131-
}
1+
// Copyright (c) 2024, Sudipto Chandra
2+
// All rights reserved. Check LICENSE file for details.
3+
4+
import 'dart:math';
5+
6+
import 'package:hashlib/random.dart';
7+
8+
import '_base.dart';
9+
10+
const int _maxInt = 0xFFFFFFFF;
11+
12+
class SystemRandomBenchmark extends Benchmark {
13+
final random = HashlibRandom(RNG.system);
14+
SystemRandomBenchmark(int size, int iter) : super('system', size, iter);
15+
16+
@override
17+
void run() {
18+
for (int i = 0; i < size; ++i) {
19+
random.nextInt();
20+
}
21+
}
22+
}
23+
24+
class SecureRandomBenchmark extends Benchmark {
25+
final random = HashlibRandom(RNG.secure);
26+
SecureRandomBenchmark(int size, int iter) : super('secure', size, iter);
27+
28+
@override
29+
void run() {
30+
for (int i = 0; i < size; ++i) {
31+
random.nextInt();
32+
}
33+
}
34+
}
35+
36+
class KeccakRandomBenchmark extends Benchmark {
37+
final random = HashlibRandom(RNG.keccak);
38+
KeccakRandomBenchmark(int size, int iter) : super('keccak', size, iter);
39+
40+
@override
41+
void run() {
42+
for (int i = 0; i < size; ++i) {
43+
random.nextInt();
44+
}
45+
}
46+
}
47+
48+
class SHA256RandomBenchmark extends Benchmark {
49+
final random = HashlibRandom(RNG.sha256);
50+
SHA256RandomBenchmark(int size, int iter) : super('sha256', size, iter);
51+
52+
@override
53+
void run() {
54+
for (int i = 0; i < size; ++i) {
55+
random.nextInt();
56+
}
57+
}
58+
}
59+
60+
class SM3RandomBenchmark extends Benchmark {
61+
final random = HashlibRandom(RNG.sm3);
62+
SM3RandomBenchmark(int size, int iter) : super('sm3', size, iter);
63+
64+
@override
65+
void run() {
66+
for (int i = 0; i < size; ++i) {
67+
random.nextInt();
68+
}
69+
}
70+
}
71+
72+
class XXH64RandomBenchmark extends Benchmark {
73+
final random = HashlibRandom(RNG.xxh64);
74+
XXH64RandomBenchmark(int size, int iter) : super('xxh64', size, iter);
75+
76+
@override
77+
void run() {
78+
for (int i = 0; i < size; ++i) {
79+
random.nextInt();
80+
}
81+
}
82+
}
83+
84+
class RandomBenchmark extends Benchmark {
85+
final random = Random(56468882);
86+
RandomBenchmark(int size, int iter) : super('Random', size, iter);
87+
88+
@override
89+
void run() {
90+
for (int i = 0; i < size; ++i) {
91+
random.nextInt(_maxInt);
92+
}
93+
}
94+
}
95+
96+
class SystemSecureRandomBenchmark extends Benchmark {
97+
final random = Random.secure();
98+
SystemSecureRandomBenchmark(int size, int iter)
99+
: super('Random.secure', size, iter);
100+
101+
@override
102+
void run() {
103+
for (int i = 0; i < size; ++i) {
104+
random.nextInt(_maxInt);
105+
}
106+
}
107+
}
108+
109+
void main() {
110+
print('--------- Random ----------');
111+
final conditions = [
112+
[5 << 20, 10],
113+
[1 << 10, 5000],
114+
[10, 100000],
115+
];
116+
for (var condition in conditions) {
117+
int size = condition[0];
118+
int iter = condition[1];
119+
print('---- size: ${formatSize(size)} | iterations: $iter ----');
120+
RandomBenchmark(size, iter).measureDiff([
121+
SystemSecureRandomBenchmark(size, iter),
122+
SecureRandomBenchmark(size, iter),
123+
SystemRandomBenchmark(size, iter),
124+
KeccakRandomBenchmark(size, iter),
125+
SM3RandomBenchmark(size, iter),
126+
SHA256RandomBenchmark(size, iter),
127+
XXH64RandomBenchmark(size, iter),
128+
]);
129+
print('');
130+
}
131+
}

0 commit comments

Comments
 (0)