Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
9c2bbe2
Capture <doc> text on every raw GIR entity
redvers May 27, 2026
85c3ef5
Add GirModel.resolve_by_c_type for c_type -> node lookup
redvers May 27, 2026
5460a2d
Add doc_translate package — GIR <doc> text -> Pony docstring markdown
redvers May 27, 2026
96d13ff
Add EverythingPlanner — full-namespace EmitPlan
redvers May 27, 2026
f3a882d
Wire docstring emission into the emitter — opt-in via emit_docstrings
redvers May 27, 2026
08449c1
Add gir-docs binary — generates docstring-attached package tree
redvers May 27, 2026
60f722f
Enable docstring emission in compile mode
redvers May 27, 2026
6495770
EverythingPlanner: don't add constructors to method_calls
redvers May 27, 2026
4bb892f
Skip varargs methods as UnemittableVariadic
redvers May 27, 2026
6cfacee
Skip array<T> parameters/returns as UnemittableUnsupportedShape
redvers May 27, 2026
0c19adc
Munge reserved-word method names; share the munger across emitter+docs
redvers May 27, 2026
01d2639
Use 'g' prefix for method-name munging (Pony methods reject primes)
redvers May 27, 2026
e60438e
Use GIR c:type for class/type names instead of namespace.local prepend
redvers May 27, 2026
d09289f
Disambiguate constructor names + drop compile_error skip stubs
redvers May 27, 2026
6629ca1
Emit sibling-package use directives for cross-namespace type refs
redvers May 27, 2026
f99b048
Dedupe types declared in multiple GIR namespaces
redvers May 27, 2026
dd1fba8
Break GtkRuntime cycle via a PinnedRuntime interface in gobject_runtime
redvers May 28, 2026
674d544
Wrap return values + fix record marshalling (fixes #100 and #101)
redvers May 28, 2026
e946476
Add CI workflows mirroring the libxml2 pattern
redvers May 28, 2026
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
68 changes: 68 additions & 0 deletions .github/workflows/announce-a-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
name: Announce a release

on:
push:
tags:
- 'announce-[0-9]+.[0-9]+.[0-9]+'

concurrency: announce-a-release

permissions:
packages: write
contents: write

jobs:
announce:
name: Announcements
runs-on: ubuntu-latest
steps:
- name: Checkout main
uses: actions/checkout@v6.0.2
with:
ref: "main"
token: ${{ secrets.RELEASE_TOKEN }}
- name: Release notes
uses: docker://ghcr.io/ponylang/release-bot-action:0.6.3
with:
entrypoint: publish-release-notes-to-github
env:
RELEASE_TOKEN: ${{ secrets.RELEASE_TOKEN }}
- name: Zulip
uses: docker://ghcr.io/ponylang/release-bot-action:0.6.3
with:
entrypoint: send-announcement-to-pony-zulip
env:
ZULIP_API_KEY: ${{ secrets.ZULIP_RELEASE_API_KEY }}
ZULIP_EMAIL: ${{ secrets.ZULIP_RELEASE_EMAIL }}
- name: Last Week in Pony
uses: docker://ghcr.io/ponylang/release-bot-action:0.6.3
with:
entrypoint: add-announcement-to-last-week-in-pony
env:
RELEASE_TOKEN: ${{ secrets.CONTACTRED_MAIN_API_TOKEN }}

post-announcement:
name: Tasks to run after the release has been announced
needs:
- announce
runs-on: ubuntu-latest
steps:
- name: Checkout main
uses: actions/checkout@v6.0.2
with:
ref: "main"
token: ${{ secrets.RELEASE_TOKEN }}
- name: Rotate release notes
uses: docker://ghcr.io/ponylang/release-bot-action:0.6.3
with:
entrypoint: rotate-release-notes
env:
GIT_USER_NAME: "redvers"
GIT_USER_EMAIL: "red@contact.red"
- name: Delete announcement trigger tag
uses: docker://ghcr.io/ponylang/release-bot-action:0.6.3
with:
entrypoint: delete-announcement-tag
env:
GIT_USER_NAME: "redvers"
GIT_USER_EMAIL: "red@contact.red"
39 changes: 39 additions & 0 deletions .github/workflows/changelog-bot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: Changelog Bot

on:
push:
branches:
- '**'
tags-ignore:
- '**'
paths-ignore:
- CHANGELOG.md

permissions:
packages: read
pull-requests: read
contents: write

jobs:
changelog-bot:
runs-on: ubuntu-latest
name: Update CHANGELOG.md
steps:
- name: Update Changelog
uses: docker://ghcr.io/ponylang/changelog-bot-action:0.3.8
with:
GIT_USER_NAME: "redvers"
GIT_USER_EMAIL: "red@contact.red"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# - name: Send alert on failure
# if: ${{ failure() }}
# uses: zulip/github-actions-zulip/send-message@e4c8f27c732ba9bd98ac6be0583096dea82feea5
# with:
# api-key: ${{ secrets.ZULIP_SCHEDULED_JOB_FAILURE_API_KEY }}
# email: ${{ secrets.ZULIP_SCHEDULED_JOB_FAILURE_EMAIL }}
# organization-url: 'https://ponylang.zulipchat.com/'
# to: notifications
# type: stream
# topic: ${{ github.repository }} unattended job failure
# content: ${{ github.server_url}}/${{ github.repository }}/actions/runs/${{ github.run_id }} failed.
45 changes: 45 additions & 0 deletions .github/workflows/generate-documentation.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: Manually generate documentation

on:
workflow_dispatch

permissions:
contents: read
pages: write
id-token: write

concurrency:
group: "update-documentation"
cancel-in-progress: true

jobs:
generate-documentation:
name: Generate documentation for release
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
container:
image: ghcr.io/ponylang/library-documentation-action-v2:release
steps:
- name: Checkout
uses: actions/checkout@v6.0.2
- name: Generate documentation
run: /entrypoint.py
env:
INPUT_SITE_URL: "https://gir-compiler.contact.red/"
INPUT_LIBRARY_NAME: "gir-compiler"
INPUT_DOCS_BUILD_DIR: "build/gir-compiler-docs"
- name: Apply custom theme
run: cp -r docs-theme/assets/* build/gir-compiler-docs/docs/assets/
- name: Rebuild site with custom theme
run: cd build/gir-compiler-docs && mkdocs build
- name: Setup Pages
uses: actions/configure-pages@v5
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: 'build/gir-compiler-docs/site/'
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
22 changes: 22 additions & 0 deletions .github/workflows/lint-action-workflows.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: Lint GitHub Action Workflows

on: pull_request

concurrency:
group: lint-actions-${{ github.ref }}
cancel-in-progress: true

permissions:
packages: read

jobs:
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6.0.2
- name: Check workflow files
uses: docker://ghcr.io/ponylang/shared-docker-ci-actionlint:20260311
with:
args: -color
4 changes: 3 additions & 1 deletion .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,5 +22,7 @@ jobs:
uses: actions/checkout@v5
- name: make
run: make
- name: smoke test
- name: smoke test gir-compiler
run: build/debug/gir-compiler --version
- name: smoke test gir-docs
run: build/debug/gir-docs --version
4 changes: 3 additions & 1 deletion .github/workflows/pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,5 +45,7 @@ jobs:
uses: actions/checkout@v5
- name: make
run: make
- name: smoke test
- name: smoke test gir-compiler
run: build/debug/gir-compiler --version
- name: smoke test gir-docs
run: build/debug/gir-docs --version
102 changes: 102 additions & 0 deletions .github/workflows/prepare-for-a-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
name: Prepare for a release

on:
push:
tags:
- 'release-[0-9]+.[0-9]+.[0-9]+'

concurrency: prepare-for-a-release

permissions:
packages: read
contents: write

jobs:
# all tasks that need to be done before we add an X.Y.Z tag
# should be done as a step in the pre-tagging job.
# think of it like this... if when you later checkout the tag for a release,
# should the change be there? if yes, do it here.
pre-tagging:
name: Tasks run before tagging the release
runs-on: ubuntu-latest
steps:
- name: Checkout main
uses: actions/checkout@v6.0.2
with:
ref: "main"
token: ${{ secrets.RELEASE_TOKEN }}
- name: Update CHANGELOG.md
uses: docker://ghcr.io/ponylang/release-bot-action:0.6.3
with:
entrypoint: update-changelog-for-release
env:
GIT_USER_NAME: "redvers"
GIT_USER_EMAIL: "red@contact.red"
- name: Update VERSION
uses: docker://ghcr.io/ponylang/release-bot-action:0.6.3
with:
entrypoint: update-version-in-VERSION
env:
GIT_USER_NAME: "redvers"
GIT_USER_EMAIL: "red@contact.red"
- name: Update version in README
uses: docker://ghcr.io/ponylang/release-bot-action:0.6.3
with:
entrypoint: update-version-in-README
env:
GIT_USER_NAME: "redvers"
GIT_USER_EMAIL: "red@contact.red"
- name: Update corral.json
uses: docker://ghcr.io/ponylang/release-bot-action:0.6.3
with:
entrypoint: update-version-in-corral-json
env:
GIT_USER_NAME: "redvers"
GIT_USER_EMAIL: "red@contact.red"

# tag for release
# this will kick off the next stage of the release process
# no additional steps should be added to this job
tag-release:
name: Tag the release
needs:
- pre-tagging
runs-on: ubuntu-latest
steps:
- name: Checkout main
uses: actions/checkout@v6.0.2
with:
ref: "main"
token: ${{ secrets.RELEASE_TOKEN }}
- name: Trigger artefact creation
uses: docker://ghcr.io/ponylang/release-bot-action:0.6.3
with:
entrypoint: trigger-artefact-creation
env:
GIT_USER_NAME: "redvers"
GIT_USER_EMAIL: "red@contact.red"

# all cleanup tags that should happen after tagging for release should happen
# in the post-tagging job. examples of things you might do:
# add a new unreleased section to a changelog
# set a version back to "snapshot"
# in general, post-tagging is for "going back to normal" from tasks that were
# done during the pre-tagging job
post-tagging:
name: Tasks run after tagging the release
needs:
- tag-release
runs-on: ubuntu-latest
steps:
- name: Checkout main
uses: actions/checkout@v6.0.2
with:
ref: "main"
token: ${{ secrets.RELEASE_TOKEN }}
- name: Add "unreleased" section to CHANGELOG.md
uses: docker://ghcr.io/ponylang/release-bot-action:0.6.3
with:
entrypoint: add-unreleased-section-to-changelog
env:
GIT_USER_NAME: "redvers"
GIT_USER_EMAIL: "red@contact.red"
21 changes: 21 additions & 0 deletions .github/workflows/release-notes-reminder.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
name: Release Notes Reminder

on:
pull_request_target:
types:
- labeled

permissions:
packages: read
pull-requests: write

jobs:
release-note-reminder:
runs-on: ubuntu-latest
name: Prompt to add release notes
steps:
- name: Prompt to add release notes
uses: docker://ghcr.io/ponylang/release-notes-reminder-bot-action:0.1.1
env:
API_CREDENTIALS: ${{ secrets.CONTACTRED_MAIN_API_TOKEN }}

40 changes: 40 additions & 0 deletions .github/workflows/release-notes.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: Release Notes

on:
push:
branches:
- '**'
tags-ignore:
- '**'
paths-ignore:
- .release-notes/next-release.md
- .release-notes/\d+.\d+.\d+.md

permissions:
packages: read
pull-requests: read
contents: write

jobs:
release-notes:
runs-on: ubuntu-latest
name: Update release notes
steps:
- name: Update
uses: docker://ghcr.io/ponylang/release-notes-bot-action:0.3.11
with:
GIT_USER_NAME: "redvers"
GIT_USER_EMAIL: "red@contact.red"
env:
API_CREDENTIALS: ${{ secrets.GITHUB_TOKEN }}
# - name: Send alert on failure
# if: ${{ failure() }}
# uses: zulip/github-actions-zulip/send-message@e4c8f27c732ba9bd98ac6be0583096dea82feea5
# with:
# api-key: ${{ secrets.ZULIP_SCHEDULED_JOB_FAILURE_API_KEY }}
# email: ${{ secrets.ZULIP_SCHEDULED_JOB_FAILURE_EMAIL }}
# organization-url: 'https://ponylang.zulipchat.com/'
# to: notifications
# type: stream
# topic: ${{ github.repository }} scheduled job failure
# content: ${{ github.server_url}}/${{ github.repository }}/actions/runs/${{ github.run_id }} failed.
Loading
Loading