Quick Start βͺοΈ Join Slack βͺοΈ Docs βͺοΈ 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 code. 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).
Our mission is to bring back your creative flow and close the gap between imagination and creation. Wing elevates your cloud development experience to new heights (the puns are just inevitable so bear with us)! π
Wing is built by Elad Ben-Israel, the guy behind the AWS CDK, the gang at Monada and an amazing community of contributors (also known as Wingnuts).
Wing takes a unique approach to cloud development - instead of thinking about computers as individuals machines, it treats the entire cloud as the computer. By abstracting the cloud, Wing allows anyone building cloud applications to focus on their business logic and choose the target cloud at compile time.
The result? While your main code is written in Wing, the compilation artifacts are JavaScript and Terraform (with more provisioning engines on the way), meaning Wing can fit seamlessly into your existing stack!
In addition, Wing provides a built-in local simulator, and an observability & debugging console, making it easier for you to reduce cognitive load and context switching, enabling you to stay in your creative flow.
Here's a taste of what Wing code looks like:
bring cloud;
// This code defines a bucket as part of your application.
// At compile time, it will be substituted by an implementation
// for the target cloud provider.
let bucket = new cloud.Bucket();
// Here we are able to interact with infra config of the bucket
bucket.public = true;
// An `inflight` represents code that runs later, on other machines,
// and can interact with any cloud resources
let hello_world = inflight () => {
bucket.put("hello.txt", "Hello, World!");
};
// We can deploy the inflight as a serverless function
// (or in the future as a long-running service, etc.)
new cloud.Function(hello_world);
To give full control over how applications are deployed, Wing lets you customize operational details in a few ways:
- by creating a compiler plugin that modifies the generated Terraform, or
- by providing implementations of built-in resources like
cloud.Bucket
, or- by developing your own custom resources.
This layer of separation allows you to refactor code and write unit tests that focus on the business logic, while still having the flexibility to make changes under the hood.
π§ Wing is still in alpha, and not recommended for production use. But we're excited for anyone to take part in shaping our roadmap and contributing in any way. Our project status page includes more information about stability and roadmap.
You can install Wing in a few simple steps:
- Check out the Prerequisites.
- Install the Wing CLI.
- Get the Wing IDE Extension for your favorite editor.
- 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!
To learn more about Wing concepts such as resources and inflights, jump over to the Concepts section in our docs.
For a comprehensive reference of the language, check out the Wing Language Specification and the API Reference.
We believe that the cloud is a new kind of computer that requires a new programming paradigm to fully utilize it. While it is possible to use this new paradigm with existing languages, we believe that a language that natively supports it will make using it much easier by streamlining common patterns, in a way that is impossible to accomplish with existing ones. Kind of like what C++ did for object orientation.
You can find more details with concrete examples of things that cannot be done with existing languages here.
Wing was built from the ground up to make it an ideal choice 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 config or runtime (
preflight
andinflight
). - Higher level of cloud abstraction with a standard library.
- Distributed computing primitives.
- Compiler plugins that can be used to customize the compilation output, such as infrastructure definitions.
- JavaScript interoperability.
- Automatic generation of IAM policies and other cloud mechanics based on intent.
- Native JSON and schema validation support.
- Default immutability.
- Implicit async, explicit defer.
For a more in-depth look at Wing's features and benefits, check out our documentation.
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?
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.
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. We appreciate your support and look forward to learning and building together.
We are incredibly grateful to our entire community for contributing bug fixes and improvements:
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)! π€οΈπ