Skip to main content

Community Fix Sprint 1 — six bugs down

· 2 min read
Elad Ben-Israel
Co-Founder & CEO at Wing Cloud

Following the winglang.io revival, we started working through the open bug backlog, prioritized by impact. This is the first sprint: six confirmed bugs, six merged fixes.

Since the site came back, the winglang project has been running community-driven fix sprints against the open issue backlog. Each sprint picks a batch of confirmed, high-impact bugs and gets them fixed, tested, and merged.

Sprint 1 tackled six issues that affected everyday usage of the language, SDK, and cloud deployments:

cloud.ApiRequest.body is empty for GET requests

Fixed in #7273. The simulator returned an empty string for a request body when none was sent; cloud.ApiRequest.body is now undefined for requests without a body, matching the API contract and the AWS behavior.

Cloud deployment fails if the project directory contains spaces

Fixed in #7277. A lambda's code bundle was archived through a shell-out that split the command on spaces, breaking wing test -t tf-aws (and deploys) whenever the working directory contained a space — a common case on Windows and macOS. The archiving path now shell-outs without a shell, using argument arrays.

cloud.Queue timeout didn't redeliver

Fixed in #7276. A consumer that ran longer than the queue's configured timeout silently kept the message forever instead of making it available again. The simulator now tracks in-flight messages and re-delivers them once the visibility timeout lapses, mirroring the AWS SQS behavior.

Cannot serialize duration or regex to Json

Fixed in #7278. Structs containing duration or regex fields could not be converted to and from Json. duration now serializes as a string of milliseconds, and regex as its pattern string.

Unable to create a mutable copy of a mutable collection

Fixed in #7274. MutArray, MutSet, and MutMap now expose copyMut(), which returns an independent mutable copy — the mutable counterpart to copy().

TypeScript extern annotation for optional returns

Fixed in #7275. The generated *.extern.d.ts for an extern function returning an optional now emits undefined instead of void, so the annotations type-check correctly against Wing semantics.

All six fixes landed on main with tests. Thanks to everyone who filed, reproduced, and helped triage these — on to the next sprint.