Home
About
Blog
Products
Forum
Support
Contact
Sunbelt Computer Software
PL/B Language Development and Support
Home
About
Blog
Products
Forum
Support
Contact
tinyhttps/.github/workflows/ci.yml at master · mcpplibs/tinyhttps · GitHub
Skip to content
Navigation Menu
Sign in
Appearance settings
Platform
AI CODE CREATION
GitHub Copilot
Write better code with AI
GitHub Copilot app
Direct agents from issue to merge
MCP Registry
Integrate external tools
DEVELOPER WORKFLOWS
Actions
Automate any workflow
Codespaces
Instant dev environments
Issues
Plan and track work
Code Review
Manage code changes
Code Quality
Enforce quality at merge
APPLICATION SECURITY
GitHub Advanced Security
Find and fix vulnerabilities
Code security
Secure your code as you build
Secret protection
Stop leaks before they start
EXPLORE
Why GitHub
Documentation
Blog
Changelog
Marketplace
View all features
Solutions
BY COMPANY SIZE
Enterprises
Small and medium teams
Startups
Nonprofits
BY USE CASE
App Modernization
DevSecOps
DevOps
CI/CD
View all use cases
BY INDUSTRY
Healthcare
Financial services
Manufacturing
Government
View all industries
View all solutions
Resources
EXPLORE BY TOPIC
AI
Software Development
DevOps
Security
View all topics
EXPLORE BY TYPE
Customer stories
Events & webinars
Ebooks & reports
Business insights
GitHub Skills
SUPPORT & SERVICES
Documentation
Customer support
Community forum
Trust center
Partners
View all resources
Open Source
COMMUNITY
GitHub Sponsors
Fund open source developers
PROGRAMS
Security Lab
Maintainer Community
GitHub Stars
Archive Program
REPOSITORIES
Topics
Trending
Collections
Enterprise
ENTERPRISE SOLUTIONS
Enterprise platform
AI-powered developer platform
AVAILABLE ADD-ONS
GitHub Advanced Security
Enterprise-grade security features
Copilot for Business
Enterprise-grade AI features
Premium Support
Enterprise-grade 24/7 support
Pricing
Search
/
Sign in
Sign up
Appearance settings
You signed in with another tab or window.
Reload
to refresh your session.
You signed out in another tab or window.
Reload
to refresh your session.
You switched accounts on another tab or window.
Reload
to refresh your session.
Dismiss alert
{{ message }}
Uh oh!
There was an error while loading.
Please reload this page
.
mcpplibs
/
tinyhttps
Public
Notifications
You must be signed in to change notification settings
Fork
2
Star
4
Code
Issues
0
Pull requests
1
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Issues
Pull requests
Actions
Projects
Security and quality
Insights
Files
Expand file tree
master
Breadcrumbs
tinyhttps
/
.github
/
workflows
/
ci.yml
Copy path
View runs
Blame
More file actions
Blame
More file actions
Latest commit
History
History
History
149 lines (134 loc) · 6.47 KB
master
Breadcrumbs
tinyhttps
/
.github
/
workflows
/
ci.yml
Copy path
Top
File metadata and controls
Code
Blame
149 lines (134 loc) · 6.47 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
name
:
CI
#
THE BUILD TOOL IS NAMED HERE AND NOWHERE ELSE.
#
#
This workflow used to install it through `.xlings.json', a workspace pin that
#
`actions/checkout' places in the working directory before anything else runs.
#
Two consequences followed and neither was visible in a passing log:
#
#
* every `mcpp' invocation in this repository resolved to the pinned version
#
rather than to the one the job had installed, because that pin is read
#
from the current directory;
#
* the pin named 0.0.13, from 2026-05. The index no longer serves the
#
toolchain packages a build tool of that age asks for, so `mcpp build'
#
ended at `package 'xim:glibc@>=2.39' not found' before compiling a line.
#
#
The pin file is removed. The version is an environment variable, so the two
#
places that need it, the install and the cache, cannot drift apart again.
on
:
push
:
branches
:
[master]
pull_request
:
#
A CANARY, BECAUSE THIS ROTTED WHERE NOTHING WOULD LOOK.
#
#
The breakage above occurred between 2026-07-11 and 2026-08-29 and nothing
#
reported it: master received no pushes in that window, so the first run to
#
meet it was a contributor's pull request, whose author had no way to
#
distinguish a broken environment from a broken change.
schedule
:
-
cron
:
'
0 6 * * 1
'
workflow_dispatch
:
env
:
MCPP_VERSION
:
2026.8.29.1
XLINGS_VERSION
:
v2026.8.17.2
XLINGS_NON_INTERACTIVE
:
'
1
'
jobs
:
build
:
name
:
build + test (linux x86_64, mcpp)
runs-on
:
ubuntu-latest
timeout-minutes
:
45
steps
:
-
uses
:
actions/checkout@v4
-
name
:
Install xlings
run
:
|
# --retry-all-errors and not --retry alone: the first covers a
# transient HTTP status and a timeout, and what this step actually
# meets is a failure of the transport. Observed in this ecosystem as
# `curl: (35) Recv failure: Connection reset by peer', thirteen
# seconds into a job, before anything was built.
curl -fsSL --retry 3 --retry-all-errors --retry-delay 2 \
https://raw.githubusercontent.com/openxlings/xlings/main/tools/other/quick_install.sh \
| bash -s "$XLINGS_VERSION"
echo "$HOME/.xlings/subos/current/bin" >> "$GITHUB_PATH"
-
name
:
Install mcpp
run
:
|
xlings update
xlings install "mcpp@$MCPP_VERSION" -y -g
# The version this job runs is the version it prints. A pin that is
# not read is the failure this file exists to stop repeating.
mcpp --version
# A runner outside China reaches the mirrors this names. The CN set is
# for a developer's machine and is slower or unreachable from here.
mcpp self config --mirror GLOBAL
#
The toolchain mcpp bootstraps is decided by the version pinned above, so
#
that version is the whole of the key.
-
name
:
Cache mcpp sandbox
uses
:
actions/cache@v4
with
:
path
:
~/.xlings/data/xpkgs/xim-x-mcpp/${{ env.MCPP_VERSION }}/registry
key
:
mcpp-sandbox-${{ runner.os }}-mcpp${{ env.MCPP_VERSION }}
-
name
:
Build with mcpp
run
:
mcpp build
#
Most of these are hermetic: `test_framing` needs nothing, and `test_pool`
#
scripts its own TLS server on 127.0.0.1. The eight in `test_download`
#
and `test_resolver` reach httpbin.org and one.one.one.one; a network
#
failure among them is distinguishable in the log by the endpoint it
#
names.
-
name
:
Run tests
run
:
mcpp test
#
A TEMPLATE IS PART OF THE RELEASE THAT SHIPS IT, AND `mcpp new` CAN ONLY
#
REACH ONE THAT IS ALREADY PUBLISHED. Checking them after the release
#
makes the first person to run `mcpp new` the one who finds out they do
#
not compile, so this renders them the way the scaffolder does and builds
#
them against this commit. It has already caught one: `import std`
#
carries no `stdout` macro, so a progress bar flushed through it did not
#
compile in a generated project while compiling fine in this repository.
-
name
:
Smoke-test the project templates
run
:
bash tools/template_smoke.sh
#
── The same sources, on a different kernel ABI ──────────────────────────────
#
#
WHY THIS IS A SEPARATE JOB AND NOT A STEP. It resolves a different toolchain
#
(llvm rather than gcc) and a different everything below the program — musl
#
ported onto openkal, libc++ configured for that musl, and openkal-linux
#
beneath both. Sharing a job would mean sharing a cache key between two
#
stacks that have nothing in common but the source tree.
#
#
WHAT IT CATCHES THAT THE JOB ABOVE CANNOT. `Socket::write` sends with
#
MSG_NOSIGNAL and `connect_addrinfo` sets SO_NOSIGPIPE, and which of those
#
exists is decided by the C library rather than by the operating system —
#
openkal-musl defines the first and not the second. A `#ifdef` that is wrong
#
about that compiles cleanly here and fails there, which is exactly how
#
5e7d66f reached master.
openkal
:
name
:
build + run (linux x86_64, above openkal)
runs-on
:
ubuntu-latest
timeout-minutes
:
45
steps
:
-
uses
:
actions/checkout@v4
-
name
:
Install xlings
run
:
|
curl -fsSL --retry 3 --retry-all-errors --retry-delay 2 \
https://raw.githubusercontent.com/openxlings/xlings/main/tools/other/quick_install.sh \
| bash -s "$XLINGS_VERSION"
echo "$HOME/.xlings/subos/current/bin" >> "$GITHUB_PATH"
-
name
:
Install mcpp
run
:
|
xlings update
xlings install "mcpp@$MCPP_VERSION" -y -g
mcpp --version
mcpp self config --mirror GLOBAL
-
name
:
Cache mcpp sandbox
uses
:
actions/cache@v4
with
:
path
:
~/.xlings/data/xpkgs/xim-x-mcpp/${{ env.MCPP_VERSION }}/registry
key
:
mcpp-openkal-${{ runner.os }}-mcpp${{ env.MCPP_VERSION }}
#
The example builds the library from this checkout (`path = "../.."`) and
#
takes the stack beneath it from the index, so what is tested is this
#
commit against the published openkal packages.
#
#
It makes one HTTPS request and reports "no network" rather than failing
#
when there is none, so a runner without egress reports "not run" instead
#
of "broken". The build, the link and the framing parsers are checked
#
either way.
-
name
:
Build and run above openkal
working-directory
:
examples/openkal
run
:
mcpp run
You can’t perform that action at this time.