https://github.com/winglang/wing Skip to content Toggle navigation Sign up * Product + Actions Automate any workflow + Packages Host and manage packages + Security Find and fix vulnerabilities + Codespaces Instant dev environments + Copilot Write better code with AI + Code review Manage code changes + Issues Plan and track work + Discussions Collaborate outside of code Explore + All features + Documentation + GitHub Skills + Blog * Solutions For + Enterprise + Teams + Startups + Education By Solution + CI/CD & Automation + DevOps + DevSecOps Resources + Learning Pathways + White papers, Ebooks, Webinars + Customer Stories + Partners * Open Source + GitHub Sponsors Fund open source developers + The ReadME Project GitHub community articles Repositories + Topics + Trending + Collections * Pricing Search or jump to... Search code, repositories, users, issues, pull requests... Search [ ] Clear Search syntax tips Provide feedback We read every piece of feedback, and take your input very seriously. [ ] [ ] Include my email address so I can be contacted Cancel Submit feedback Saved searches Use saved searches to filter your results more quickly Name [ ] Query [ ] To see all available qualifiers, see our documentation. Cancel Create saved search Sign in Sign up 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 }} winglang / wing Public * Notifications * Fork 110 * Star 2.8k The Wing Programming Language winglang.io License View license 2.8k stars 110 forks Activity Star Notifications * Code * Issues 751 * Pull requests 29 * Discussions * Actions * Projects 3 * Security * Insights Additional navigation options * Code * Issues * Pull requests * Discussions * Actions * Projects * Security * Insights winglang/wing This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. main Switch branches/tags [ ] Branches Tags Could not load branches Nothing to show {{ refName }} default View all branches Could not load tags Nothing to show {{ refName }} default View all tags Name already in use A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch? Cancel Create 211 branches 1,358 tags Code * Local * Codespaces * Clone HTTPS GitHub CLI [https://github.com/w] Use Git or checkout with SVN using the web URL. [gh repo clone wingla] Work fast with our official CLI. Learn more about the CLI. * Open with GitHub Desktop * Download ZIP Sign In Required Please sign in to use Codespaces. Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Launching Xcode If nothing happens, download Xcode and try again. Launching Visual Studio Code Your codespace will open once ready. There was a problem preparing your codespace, please try again. Latest commit @tsuf239 tsuf239 fix(repo): fix bash conditions in sdk spec tests (#5156) ... abef5e0 Dec 6, 2023 fix(repo): fix bash conditions in sdk spec tests (#5156) ## Description fix bash conditions in sdk spec tests ## Checklist - [ ] Title matches [Winglang's style guide](https://www.winglang.io/contributing/start-here/pull_requests#how-are-pull-request-titles-formatted) - [ ] Description explains motivation and solution - [ ] Tests added (always) - [ ] Docs updated (only required for features) - [ ] Added `pr/e2e-full` label if this feature requires end-to-end testing *By submitting this pull request, I confirm that my contribution is made under the terms of the [Wing Cloud Contribution License](https://github.com/winglang/wing/blob/main/CONTRIBUTION_LICENSE.md)*. abef5e0 Git stats * 2,489 commits Files Permalink Failed to load latest commit information. Type Name Latest commit message Commit time .cargo chore(compiler): update rust and wasi toolchain (#4458) October 11, 2023 01:22 .devcontainer chore: switch to pnpm (#3245) July 5, 2023 17:35 .github fix(repo): fix bash conditions in sdk spec tests (#5156) December 6, 2023 18:11 .vscode chore: refactor to turbo (#3447) August 3, 2023 15:40 apps feat(sdk): enabling tf-gcp test command (#4905) December 6, 2023 18:01 docs feat(sdk): a few changes to the docgen (#5121) December 6, 2023 17:49 examples feat(cli): add support for .env files (#4608) December 6, 2023 00:23 libs feat(sdk): enabling tf-gcp test command (#4905) December 6, 2023 18:01 patches chore(sdk): allow aws sdk endpoint configuration via env variables (# ... October 30, 2023 16:33 scripts chore(build): make binaryen installation more robust (#4548) October 16, 2023 10:15 tools feat(cli): add support for .env files (#4608) December 6, 2023 00:23 .gitattributes feat(sdk): cloud.OnDeploy (#3566) July 23, 2023 19:21 .gitignore chore(compiler): update rust and wasi toolchain (#4458) October 11, 2023 01:22 .insta.yaml fix: sdk missing type completions when not used already (#2640) May 25, 2023 18:17 .mergify.yml chore(repo): typo in mergify queue message (#3876) August 17, 2023 20:26 .node-version chore: website sdk windows snapshot mismatch (#2994) June 20, 2023 14:31 .nvmrc chore: add nvmrc (#1740) March 7, 2023 14:12 .rustfmt.toml chore: Move projects into monorepo structure (#134) September 20, 2022 14:26 CODE_OF_CONDUCT.md feat(docs): contributing guide (#450) November 8, 2022 16:31 CONTRIBUTING.md chore(docs): grammatical errors (#4726) October 30, 2023 21:31 CONTRIBUTION_LICENSE.md chore(docs): renaming monada to wing cloud (#3674) August 16, 2023 15:25 CONTRIBUTORS_TERMS_OF_SERVICE.md chore(docs): renaming monada to wing cloud (#3674) August 16, 2023 15:25 Cargo.lock fix(compiler): unable to bring modules with non-symbolic directory na... November 23, 2023 09:54 Cargo.toml chore(compiler): update rust and wasi toolchain (#4458) October 11, 2023 01:22 LICENSE.md chore(docs): renaming monada to wing cloud (#3674) August 16, 2023 15:25 README.md chore: fix build by updating snapshots (#5082) November 28, 2023 15:14 SECURITY.md chore(docs): add security.md (#2588) May 19, 2023 13:34 package.json chore(sdk): allow aws sdk endpoint configuration via env variables (# ... October 30, 2023 16:33 pnpm-lock.yaml feat(sdk): enabling tf-gcp test command (#4905) December 6, 2023 18:01 pnpm-workspace.yaml feat(cli): wing pack (#3938) October 5, 2023 21:57 rust-toolchain.toml chore(compiler): update rust and wasi toolchain (#4458) October 11, 2023 01:22 turbo.json chore: improved benchmark reporting and gating (#4302) September 28, 2023 13:46 wing.code-workspace chore(repo): add VS Code workspace file (take 2) (#4107) September 14, 2023 11:38 View code [ ] Welcome to the Wing Language! Why do we think the cloud needs a programming language? Very cool, but what here cannot be done by a library or compiler extension? What makes Wing a good fit for cloud development? Getting started [?] FAQs Community Contributing License README.md Welcome to the Wing Language! Take a Tour #[?] Getting Started #[?] Join Slack #[?] FAQ #[?] Roadmap #[?] Issues #[?] Discussions #[?] Contribute Winglang is a new open-source programming language designed for the cloud (aka "cloud-oriented"). Wing enables developers to build distributed systems that leverage cloud services as first-class citizens by combining infrastructure and application code in a safe and unified programming model (aka "cloud-oriented"). Wing programs can be executed locally (yes, no internet required) using a fully-functional simulator, or deployed to any cloud provider (yes, Wing programs are portable across providers). The mission of Winglang is to bring back your creative flow and close the gap between imagination and creation. Developing for the cloud today requires mastering various layers of the cloud stack, IAM roles, networking, and numerous tools, along with finding creative ways to test and debug code. In addition, long deployment times hinder iteration cycles and take developers out of their creative flow. Winglang addresses these pains by letting you work at a higher level of abstraction and allowing you to focus on business logic instead of cloud mechanics, only surfacing low-level details when it's needed. We also provide you with a set of tools that let you test your code locally, significantly faster than before. Wing Demo Wing is built by Elad Ben-Israel, the guy behind the AWS CDK, the gang at the Wing Cloud team and an amazing community of contributors (also known as Wingnuts). Click here to watch a short video introduction to the Wing language. Why do we think the cloud needs a programming language? Cloud applications are fundamentally different from applications that run on a single machine - they are distributed systems that rely on cloud infrastructure to achieve their goals. In order to be able to express both infrastructure and application logic in a safe and unified programming model, Winglang has two execution phases: preflight for infrastructure definitions and inflight for runtime code. Preflight code is executed during compilation and produces the infrastructure configuration for your app (e.g. Terraform, CloudFormation, etc). Inflight code is compiled into JavaScript and executed within cloud compute platforms in Node.js environments. Let's look at a simple example: bring cloud; let queue = new cloud.Queue(); let counter = new cloud.Counter(); let bucket = new cloud.Bucket(); queue.setConsumer(inflight (message) => { let i = counter.inc(); bucket.put("file-{i}.txt", message); }); cloud.Queue, cloud.Counter and cloud.Bucket are preflight objects. They represent cloud infrastructure resources. When compiled to a specific cloud provider, such as AWS, a Terraform file will be produced with the provider's implementation of these resources. The queue.setConsumer() method is a preflight method that configures the infrastructure to invoke a particular inflight function for each message in the queue. Now comes the cool part: the code that runs inside the inflight function interacts with the counter and the bucket objects through their inflight methods (counter.inc() and bucket.put()). These methods can only be called from inflight scopes. Very cool, but what here cannot be done by a library or compiler extension? In existing languages, where there is no way to distinguish between multiple execution phases, it is impossible to naturally represent this idea that an object has methods that can only be executed from within a specific execution phase (or within certain scopes of the program). You are welcome to read more about it here (including code samples that show the same app built in Wing vs. other solutions). What makes Wing a good fit for cloud development? Wing was built from scratch to make it easy for building applications on any cloud. It includes an assembly of different features that serve that purpose: * Cloud services as first-class citizens, with phase modifiers for describing infrastructure and runtime code (preflight and inflight). * Wing Cloud Library provides a standard set of resources that lets you write cloud portable code. * Compiler plugins that keep you in control by allowing you to customize the infrastructure definitions and run policy checks. * Use any resource in the Terraform ecosystem as first-class citizen in your app. * JavaScript interoperability. * Automatic generation of IAM policies and other cloud mechanics based on source code. * Wing Console - a visual application-centric operations and management console, that lets you interact with... * A simulator that can used for testing and debugging in milliseconds. * JSON as a primitive data type with schema validation support for each conversion to and from structs. * Immutability by default, implicit async code, and safety from nulls and undefined. For a more in-depth look at Wing's features and benefits, check out our documentation. Getting started [?] This is a pre-release, please see our project status for more details. If you'd just like to dip your feet in the water and see what Wing is all about, you can try it out in our online playground or walk through the interactive tour. When you're ready to start building your own Wing apps, you'll need to: 1. Install the Wing CLI. 2. Get the Wing IDE Extension for your favorite editor. 3. Launch the Wing Console and take it for a spin! For a step-by-step guide, head over to our Getting Started guide. It's a once-in-a-lifetime adventure into the Wing rabbit hole! FAQs Here are some questions we're commonly asked that are covered by our FAQ: * Who is behind this project? * Which clouds are supported by Wing? * Which provisioning engines are supported by Wing? Community Join our flock in the Wing Slack community. We're here to help each other, answer questions, and share our cloud adventures. Alternatively, post any questions on GitHub Discussions. Contributing Want to help Wing take flight? Check out our contribution guide to learn how to set up a development environment and contribute to the project. You can also get started by opening the project in GitHub Codespaces. Open in GitHub Codespaces We are incredibly grateful to our entire community for contributing bug fixes and improvements: [6874747073] License Wing is licensed under the MIT License. Contributions are made under our contribution license. Happy coding, and remember: the sky's the limit with Wing (yes, another pun)! [?] About The Wing Programming Language winglang.io Topics language programming-language cloud sdk serverless compiler hacktoberfest winglang Resources Readme License View license Code of conduct Code of conduct Security policy Security policy Activity Stars 2.8k stars Watchers 164 watching Forks 110 forks Report repository Releases 1,331 Wing 0.51.14 Latest Dec 6, 2023 + 1,330 releases Contributors 84 * @MarkMcCulloh * @Chriscbr * @skyrpex * @ainvoner * @eladb * @staycoolcall911 * @monadabot * @hasanaburayyan * @ekeren * @polamoros * @yoav-steinberg * @garysassano * @tsuf239 * @marciocadev + 70 contributors Languages * TypeScript 71.9% * Rust 26.2% * JavaScript 1.3% * CWeb 0.2% * C 0.2% * Shell 0.1% * Other 0.1% Footer (c) 2023 GitHub, Inc. Footer navigation * Terms * Privacy * Security * Status * Docs * Contact You can't perform that action at this time.