Knobs & Trapdoors: Copilot’s New Effort Dial, and the GIL That Sneaks Back In
Two days apart, two ecosystems quietly handed developers a new lever to pull — and quietly left out what pulling it costs. Drag the dial on one, flip the switches on the other, and watch the fine print show up live.
The Dial
github.blog · oct 2, 2026GitHub’s Oct 2 changelog did two things at once: code review requests can now set an effort level through the REST/GraphQL API, and every repo’s default quietly moved from “Default” to “Balanced” on Sept 28. Drag the knob to feel what that default actually buys you — and what it costs.
gateway.refund raises after the DB write above — consider wrapping in a transaction.order.total_cents.fdiv(100) over manual float division for readability.# set the effort level per request instead of inheriting the org default curl -X POST https://api.github.com/repos/acme/payments/pulls/482/copilot-review \ -H "Authorization: Bearer $GH_TOKEN" \ -d '{"effort":"balanced"}'
The Trapdoor
redhat.com · sept 14, 2026Red Hat shipped python3.14t for RHEL 9.8/10.2 on Sept 14 — a real build with no GIL. Toggle your dependencies below. The moment one isn’t free-threading-ready, Python quietly re-enables the GIL for you — same code, same flags, suddenly single-threaded again.
pure python — always fine
ft-ready since 2.1
mostly pure-python, ft-ready
not yet ft-ready
Illustrative dependency set — swap in your own stack. The mechanism (one unready C extension re-arms the GIL for the whole process) is the real, documented behavior; the specific chip labels are a stand-in for whatever’s in your requirements.txt.
Meanwhile, Ruby no opt-in required
YJIT ships on by default. There’s no ruby3.4t binary to remember to install, no C-extension registry to audit, no silent fallback — you either get the speed or you don’t, and you find out at benchmark time, not in production.
Rails just raised its own floor
Same week: This Week in Rails (Oct 2) bumped the minimum supported Ruby to 3.3.5 and deleted the decade-deprecated :controller/:action dynamic routing outright. No flag, no opt-in — Rails moves the whole ecosystem forward in one breaking commit instead of layering a parallel “fast mode” next to the old one.
Before you flip the switch
Two different philosophies, one practical checklist for whichever stack actually ships your next deploy.
# before python3.14t in prod pytest -x # run the *whole* suite under python3.14t, not just cpython pip list --format=freeze | xargs -n1 '' # audit every C-extension dep's ft status # budget 5-10% baseline overhead even if nothing breaks # before raising Copilot's review effort org-wide curl -X PATCH .../copilot/review-settings -d '{"effort":"lite"}' # pin it, don't inherit the new default # ruby just needs: ruby -v