yabeda-gc 0.2.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/lint.yml +5 -3
- data/.github/workflows/release.yml +82 -0
- data/.github/workflows/test.yml +10 -3
- data/CHANGELOG.md +29 -0
- data/Gemfile.lock +37 -31
- data/README.md +35 -0
- data/lib/yabeda/gc/version.rb +1 -1
- data/lib/yabeda/gc.rb +8 -1
- metadata +7 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a7f791f3e51087fa9a6ef485b8b0ed77ac5f36a44477b293c362565cf2934f90
|
4
|
+
data.tar.gz: 2255d5e72d224021bd4eca3a29555ebdad593bc8bc49f9f8772f356b4581e6bd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 483b0255050ec289004d223ceeae5a1d4d11d7ad2941f58db16a796be92ab43d99f6b814fb9bf8264add0011f16fc3d5d8b0e44481c424699c556abe5a2ec4b5
|
7
|
+
data.tar.gz: 14c7b474c2462fe2402a62bd35b34b9d283ca731d313f223e2fdab5d48e0d1c39890d973c613859e12c687ec42b4ebade9d467dfa269384bf09b09bb292f03fa
|
data/.github/workflows/lint.yml
CHANGED
@@ -9,15 +9,17 @@ on:
|
|
9
9
|
- 'v*'
|
10
10
|
|
11
11
|
jobs:
|
12
|
-
|
12
|
+
rubocop:
|
13
|
+
# Skip running tests for local pull requests (use push event instead), run only for foreign ones
|
14
|
+
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.owner.login != github.event.pull_request.base.repo.owner.login
|
13
15
|
name: Rubocop
|
14
16
|
runs-on: ubuntu-latest
|
15
17
|
steps:
|
16
|
-
- uses: actions/checkout@
|
18
|
+
- uses: actions/checkout@v4
|
17
19
|
- name: Set up Ruby
|
18
20
|
uses: ruby/setup-ruby@v1
|
19
21
|
with:
|
20
|
-
ruby-version: 3.
|
22
|
+
ruby-version: "3.3"
|
21
23
|
bundler-cache: true
|
22
24
|
- name: Run Rubocop
|
23
25
|
run: bundle exec rake rubocop
|
@@ -0,0 +1,82 @@
|
|
1
|
+
name: Release gem to RubyGems
|
2
|
+
|
3
|
+
on:
|
4
|
+
push:
|
5
|
+
tags:
|
6
|
+
- v*
|
7
|
+
|
8
|
+
jobs:
|
9
|
+
release:
|
10
|
+
runs-on: ubuntu-latest
|
11
|
+
permissions:
|
12
|
+
contents: write
|
13
|
+
id-token: write
|
14
|
+
packages: write
|
15
|
+
|
16
|
+
steps:
|
17
|
+
- uses: actions/checkout@v4
|
18
|
+
with:
|
19
|
+
fetch-depth: 0 # Fetch current tag as annotated. See https://github.com/actions/checkout/issues/290
|
20
|
+
- uses: ruby/setup-ruby@v1
|
21
|
+
with:
|
22
|
+
ruby-version: 3.2
|
23
|
+
- name: "Extract data from tag: version, message, body"
|
24
|
+
id: tag
|
25
|
+
run: |
|
26
|
+
git fetch --tags --force # Really fetch annotated tag. See https://github.com/actions/checkout/issues/290#issuecomment-680260080
|
27
|
+
echo ::set-output name=version::${GITHUB_REF#refs/tags/v}
|
28
|
+
echo ::set-output name=subject::$(git for-each-ref $GITHUB_REF --format='%(contents:subject)')
|
29
|
+
BODY="$(git for-each-ref $GITHUB_REF --format='%(contents:body)')"
|
30
|
+
# Extract changelog entries between this and previous version headers
|
31
|
+
escaped_version=$(echo ${GITHUB_REF#refs/tags/v} | sed -e 's/[]\/$*.^[]/\\&/g')
|
32
|
+
changelog=$(awk "BEGIN{inrelease=0} /## \[${escaped_version}\]/{inrelease=1;next} /## \[[0-9]+\.[0-9]+\.[0-9]+.*?\]/{inrelease=0;exit} {if (inrelease) print}" CHANGELOG.md)
|
33
|
+
# Multiline body for release. See https://github.community/t/set-output-truncates-multiline-strings/16852/5
|
34
|
+
BODY="${BODY}"$'\n'"${changelog}"
|
35
|
+
BODY="${BODY//'%'/'%25'}"
|
36
|
+
BODY="${BODY//$'\n'/'%0A'}"
|
37
|
+
BODY="${BODY//$'\r'/'%0D'}"
|
38
|
+
echo "::set-output name=body::$BODY"
|
39
|
+
# Add pre-release option if tag name has any suffix after vMAJOR.MINOR.PATCH
|
40
|
+
if [[ ${GITHUB_REF#refs/tags/} =~ ^v[0-9]+\.[0-9]+\.[0-9]+.+ ]]; then
|
41
|
+
echo ::set-output name=prerelease::true
|
42
|
+
fi
|
43
|
+
- name: Build gem
|
44
|
+
run: gem build
|
45
|
+
- name: Calculate checksums
|
46
|
+
run: sha256sum yabeda-gc-${{ steps.tag.outputs.version }}.gem > SHA256SUM
|
47
|
+
- name: Check version
|
48
|
+
run: ls -l yabeda-gc-${{ steps.tag.outputs.version }}.gem
|
49
|
+
- name: Create Release
|
50
|
+
id: create_release
|
51
|
+
uses: actions/create-release@v1
|
52
|
+
env:
|
53
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
54
|
+
with:
|
55
|
+
tag_name: ${{ github.ref }}
|
56
|
+
release_name: ${{ steps.tag.outputs.subject }}
|
57
|
+
body: ${{ steps.tag.outputs.body }}
|
58
|
+
draft: false
|
59
|
+
prerelease: ${{ steps.tag.outputs.prerelease }}
|
60
|
+
- name: Upload built gem as release asset
|
61
|
+
uses: actions/upload-release-asset@v1
|
62
|
+
env:
|
63
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
64
|
+
with:
|
65
|
+
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
66
|
+
asset_path: yabeda-gc-${{ steps.tag.outputs.version }}.gem
|
67
|
+
asset_name: yabeda-gc-${{ steps.tag.outputs.version }}.gem
|
68
|
+
asset_content_type: application/x-tar
|
69
|
+
- name: Upload checksums as release asset
|
70
|
+
uses: actions/upload-release-asset@v1
|
71
|
+
env:
|
72
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
73
|
+
with:
|
74
|
+
upload_url: ${{ steps.create_release.outputs.upload_url }}
|
75
|
+
asset_path: SHA256SUM
|
76
|
+
asset_name: SHA256SUM
|
77
|
+
asset_content_type: text/plain
|
78
|
+
- name: Configure RubyGems Credentials
|
79
|
+
uses: rubygems/configure-rubygems-credentials@main
|
80
|
+
- name: Publish to RubyGems
|
81
|
+
run: |
|
82
|
+
gem push yabeda-gc-${{ steps.tag.outputs.version }}.gem
|
data/.github/workflows/test.yml
CHANGED
@@ -9,15 +9,22 @@ on:
|
|
9
9
|
- 'v*'
|
10
10
|
|
11
11
|
jobs:
|
12
|
-
|
12
|
+
test:
|
13
|
+
# Skip running tests for local pull requests (use push event instead), run only for foreign ones
|
14
|
+
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.owner.login != github.event.pull_request.base.repo.owner.login
|
13
15
|
name: "Ruby ${{ matrix.ruby }}"
|
14
16
|
runs-on: ubuntu-latest
|
15
17
|
strategy:
|
16
18
|
fail-fast: false
|
17
19
|
matrix:
|
18
|
-
ruby:
|
20
|
+
ruby:
|
21
|
+
- '3.0'
|
22
|
+
- '3.1'
|
23
|
+
- '3.2'
|
24
|
+
- '3.3'
|
25
|
+
- 'head'
|
19
26
|
steps:
|
20
|
-
- uses: actions/checkout@
|
27
|
+
- uses: actions/checkout@v4
|
21
28
|
- name: Set up Ruby
|
22
29
|
uses: ruby/setup-ruby@v1
|
23
30
|
with:
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,34 @@
|
|
1
1
|
## [Unreleased]
|
2
2
|
|
3
|
+
## [0.3.0] - 2024-01-04
|
4
|
+
|
5
|
+
### Added
|
6
|
+
|
7
|
+
- Ruby 3.3 metrics: `marking_time` and `sweeping_time`. [@aroop] in [#5](https://github.com/ianks/yabeda-gc/pull/5)
|
8
|
+
|
9
|
+
## [0.2.1] - 2022-06-22
|
10
|
+
|
11
|
+
### Fixed
|
12
|
+
|
13
|
+
- Declare `time` metric for GC only on Ruby 3.1. [@Envek]
|
14
|
+
|
15
|
+
## [0.2.0] - 2022-06-21
|
16
|
+
|
17
|
+
### Added
|
18
|
+
|
19
|
+
- Ruby 3.1 metrics: `time`, `total_moved_objects`, `read_barrier_faults`. [@tarapon] in [#3](https://github.com/ianks/yabeda-gc/pull/3)
|
20
|
+
|
21
|
+
## [0.1.1] - 2021-02-24
|
22
|
+
|
23
|
+
### Added
|
24
|
+
|
25
|
+
- `compact_count` metric. [@ianks]
|
26
|
+
|
3
27
|
## [0.1.0] - 2021-02-24
|
4
28
|
|
5
29
|
- Initial release
|
30
|
+
|
31
|
+
[@ianks]: https://github.com/ianks] "Ian Ker-Seymer"
|
32
|
+
[@tarapon]: https://github.com/tarapon "Ivan Tarapon"
|
33
|
+
[@Envek]: https://github.com/Envek "Andrey Novikov"
|
34
|
+
[@aroop]: https://github.com/aroop "Ajay Guthikonda"
|
data/Gemfile.lock
CHANGED
@@ -1,58 +1,64 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
yabeda-gc (0.
|
4
|
+
yabeda-gc (0.3.0)
|
5
5
|
yabeda (~> 0.6)
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: https://rubygems.org/
|
9
9
|
specs:
|
10
|
-
anyway_config (2.
|
10
|
+
anyway_config (2.5.4)
|
11
11
|
ruby-next-core (>= 0.14.0)
|
12
12
|
ast (2.4.2)
|
13
13
|
coderay (1.1.3)
|
14
|
-
concurrent-ruby (1.
|
14
|
+
concurrent-ruby (1.2.2)
|
15
15
|
diff-lcs (1.5.0)
|
16
16
|
dry-initializer (3.1.1)
|
17
|
+
json (2.7.1)
|
18
|
+
language_server-protocol (3.17.0.3)
|
17
19
|
method_source (1.0.0)
|
18
|
-
parallel (1.
|
19
|
-
parser (3.
|
20
|
+
parallel (1.24.0)
|
21
|
+
parser (3.2.2.4)
|
20
22
|
ast (~> 2.4.1)
|
21
|
-
|
23
|
+
racc
|
24
|
+
pry (0.14.2)
|
22
25
|
coderay (~> 1.1)
|
23
26
|
method_source (~> 1.0)
|
27
|
+
racc (1.7.3)
|
24
28
|
rainbow (3.1.1)
|
25
|
-
rake (13.0
|
26
|
-
regexp_parser (2.
|
27
|
-
rexml (3.2.
|
28
|
-
rspec (3.
|
29
|
-
rspec-core (~> 3.
|
30
|
-
rspec-expectations (~> 3.
|
31
|
-
rspec-mocks (~> 3.
|
32
|
-
rspec-core (3.
|
33
|
-
rspec-support (~> 3.
|
34
|
-
rspec-expectations (3.
|
29
|
+
rake (13.1.0)
|
30
|
+
regexp_parser (2.8.3)
|
31
|
+
rexml (3.2.6)
|
32
|
+
rspec (3.12.0)
|
33
|
+
rspec-core (~> 3.12.0)
|
34
|
+
rspec-expectations (~> 3.12.0)
|
35
|
+
rspec-mocks (~> 3.12.0)
|
36
|
+
rspec-core (3.12.2)
|
37
|
+
rspec-support (~> 3.12.0)
|
38
|
+
rspec-expectations (3.12.3)
|
35
39
|
diff-lcs (>= 1.2.0, < 2.0)
|
36
|
-
rspec-support (~> 3.
|
37
|
-
rspec-mocks (3.
|
40
|
+
rspec-support (~> 3.12.0)
|
41
|
+
rspec-mocks (3.12.6)
|
38
42
|
diff-lcs (>= 1.2.0, < 2.0)
|
39
|
-
rspec-support (~> 3.
|
40
|
-
rspec-support (3.
|
41
|
-
rubocop (1.
|
43
|
+
rspec-support (~> 3.12.0)
|
44
|
+
rspec-support (3.12.1)
|
45
|
+
rubocop (1.59.0)
|
46
|
+
json (~> 2.3)
|
47
|
+
language_server-protocol (>= 3.17.0)
|
42
48
|
parallel (~> 1.10)
|
43
|
-
parser (>= 3.
|
49
|
+
parser (>= 3.2.2.4)
|
44
50
|
rainbow (>= 2.2.2, < 4.0)
|
45
51
|
regexp_parser (>= 1.8, < 3.0)
|
46
52
|
rexml (>= 3.2.5, < 4.0)
|
47
|
-
rubocop-ast (>= 1.
|
53
|
+
rubocop-ast (>= 1.30.0, < 2.0)
|
48
54
|
ruby-progressbar (~> 1.7)
|
49
|
-
unicode-display_width (>=
|
50
|
-
rubocop-ast (1.
|
51
|
-
parser (>= 3.
|
52
|
-
ruby-next-core (0.
|
53
|
-
ruby-progressbar (1.
|
54
|
-
unicode-display_width (2.
|
55
|
-
yabeda (0.
|
55
|
+
unicode-display_width (>= 2.4.0, < 3.0)
|
56
|
+
rubocop-ast (1.30.0)
|
57
|
+
parser (>= 3.2.1.0)
|
58
|
+
ruby-next-core (1.0.0)
|
59
|
+
ruby-progressbar (1.13.0)
|
60
|
+
unicode-display_width (2.5.0)
|
61
|
+
yabeda (0.12.0)
|
56
62
|
anyway_config (>= 1.0, < 3)
|
57
63
|
concurrent-ruby
|
58
64
|
dry-initializer
|
@@ -70,4 +76,4 @@ DEPENDENCIES
|
|
70
76
|
yabeda-gc!
|
71
77
|
|
72
78
|
BUNDLED WITH
|
73
|
-
2.
|
79
|
+
2.5.3
|
data/README.md
CHANGED
@@ -51,6 +51,8 @@ Or install it yourself as:
|
|
51
51
|
| `compact_count` | Count of all GC compactions |
|
52
52
|
| `read_barrier_faults` | The total number of times the read barrier was triggered during compaction (ruby 3+) |
|
53
53
|
| `total_moved_objects` | The total number of objects compaction has moved (ruby 3+) |
|
54
|
+
| `marking_time` | The total time spent in marking phase (ruby 3.3+) |
|
55
|
+
| `sweeping_time` | The total time spent in sweeping phase (ruby 3.3+) |
|
54
56
|
|
55
57
|
## Development
|
56
58
|
|
@@ -58,6 +60,39 @@ After checking out the repo, run `bin/setup` to install dependencies. Then, run
|
|
58
60
|
|
59
61
|
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
60
62
|
|
63
|
+
## Releasing
|
64
|
+
|
65
|
+
1. Bump version number in `lib/yabeda/gc/version.rb`
|
66
|
+
|
67
|
+
In case of pre-releases keep in mind [rubygems/rubygems#3086](https://github.com/rubygems/rubygems/issues/3086) and check version with command like `Gem::Version.new(Yabeda::gc::VERSION).to_s`
|
68
|
+
|
69
|
+
2. Fill `CHANGELOG.md` with missing changes, add header with version and date.
|
70
|
+
|
71
|
+
3. Make a commit:
|
72
|
+
|
73
|
+
```sh
|
74
|
+
bundle # to update Gemfile.lock
|
75
|
+
git add lib/yabeda/gc/version.rb CHANGELOG.md Gemfile.lock
|
76
|
+
version=$(ruby -r ./lib/yabeda/gc/version.rb -e "puts Gem::Version.new(Yabeda::GC::VERSION)")
|
77
|
+
git commit --message="${version}: " --edit
|
78
|
+
```
|
79
|
+
|
80
|
+
4. Create annotated tag:
|
81
|
+
|
82
|
+
```sh
|
83
|
+
git tag v${version} --annotate --message="${version}: " --edit --sign
|
84
|
+
```
|
85
|
+
|
86
|
+
5. Fill version name into subject line and (optionally) some description (list of changes will be taken from changelog and appended automatically)
|
87
|
+
|
88
|
+
6. Push it:
|
89
|
+
|
90
|
+
```sh
|
91
|
+
git push --follow-tags
|
92
|
+
```
|
93
|
+
|
94
|
+
7. GitHub Actions will create a new release, build and push gem into RubyGems! You're done!
|
95
|
+
|
61
96
|
## Contributing
|
62
97
|
|
63
98
|
Bug reports and pull requests are welcome on GitHub at https://github.com/ianks/yabeda-gc. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [code of conduct](https://github.com/ianks/yabeda-gc/blob/master/CODE_OF_CONDUCT.md).
|
data/lib/yabeda/gc/version.rb
CHANGED
data/lib/yabeda/gc.rb
CHANGED
@@ -53,11 +53,18 @@ module Yabeda
|
|
53
53
|
|
54
54
|
gauge :time, tags: [], comment: "The total time spent in garbage collections" if RUBY_VERSION >= "3.1"
|
55
55
|
|
56
|
+
if RUBY_VERSION >= "3.3"
|
57
|
+
gauge :marking_time, tags: [], comment: "Time spent in the marking phase"
|
58
|
+
gauge :sweeping_time, tags: [], comment: "Time spent in the sweeping phase"
|
59
|
+
end
|
60
|
+
|
56
61
|
collect do
|
57
62
|
stats = ::GC.stat
|
58
63
|
|
59
64
|
stats.each do |stat_name, value|
|
60
|
-
|
65
|
+
next unless ::Yabeda.gc.respond_to?(stat_name)
|
66
|
+
|
67
|
+
::Yabeda.gc.__send__(stat_name).set(EMPTY_HASH, value)
|
61
68
|
end
|
62
69
|
end
|
63
70
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yabeda-gc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ian Ker-Seymer
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-01-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: yabeda
|
@@ -32,6 +32,7 @@ extensions: []
|
|
32
32
|
extra_rdoc_files: []
|
33
33
|
files:
|
34
34
|
- ".github/workflows/lint.yml"
|
35
|
+
- ".github/workflows/release.yml"
|
35
36
|
- ".github/workflows/test.yml"
|
36
37
|
- ".gitignore"
|
37
38
|
- ".rspec"
|
@@ -53,7 +54,7 @@ licenses:
|
|
53
54
|
- MIT
|
54
55
|
metadata:
|
55
56
|
rubygems_mfa_required: 'true'
|
56
|
-
post_install_message:
|
57
|
+
post_install_message:
|
57
58
|
rdoc_options: []
|
58
59
|
require_paths:
|
59
60
|
- lib
|
@@ -68,8 +69,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
68
69
|
- !ruby/object:Gem::Version
|
69
70
|
version: '0'
|
70
71
|
requirements: []
|
71
|
-
rubygems_version: 3.
|
72
|
-
signing_key:
|
72
|
+
rubygems_version: 3.4.10
|
73
|
+
signing_key:
|
73
74
|
specification_version: 4
|
74
75
|
summary: Extensible Prometheus exporter for monitoring Ruby gargage collection
|
75
76
|
test_files: []
|