hasanaburayyan / wing

The Wing Programming Language

Home Page:https://www.winglang.io/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Welcome to the Wing Language! πŸ‘‹

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 Demo

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).

What's so special about Wing? πŸ€”

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);

Note for cloud experts πŸ€“

To give full control over how applications are deployed, Wing lets you customize operational details in a few ways:

  1. by creating a compiler plugin that modifies the generated Terraform, or
  2. by providing implementations of built-in resources like cloud.Bucket, or
  3. 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.

Getting started πŸ› οΈ

🚧 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:

  1. Check out the Prerequisites.
  2. Install the Wing CLI.
  3. Get the Wing IDE Extension for your favorite editor.
  4. 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!

Deeper dive 🀿

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.

Why is Wing a language, not just another library or framework? πŸ€”

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.

What makes Wing a good fit for cloud development? 🌟

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:

For a more in-depth look at Wing's features and benefits, check out our documentation.

FAQs ❓

Here are some questions we're commonly asked that are covered by our FAQ:

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. 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:

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

https://www.winglang.io/

License:MIT License


Languages

Language:TypeScript 65.1%Language:Rust 31.8%Language:JavaScript 2.2%Language:HTML 0.4%Language:C 0.3%Language:Shell 0.1%Language:Scheme 0.1%Language:C++ 0.1%Language:Python 0.0%Language:CWeb 0.0%