diff --git a/blog/2023-12-04-magazine-005.md b/blog/2023-12-04-magazine-005.md new file mode 100644 index 000000000..6bd916f81 --- /dev/null +++ b/blog/2023-12-04-magazine-005.md @@ -0,0 +1,121 @@ +--- +title: Inflight Magazine no. 5 +description: Updates from the winglang project +authors: + - dcahana2 + - markm +tags: [cloud-oriented programming, winglang, changelog, newsletter,] +hide_table_of_contents: true +--- +> The 5th issue of the Wing Inflight Magazine. +> + +Hey folks! + +We’re back with another issue of the **Wing Inflight Magazine** and we are excited to share some updates about [winglang](https://winglang.io). + +- 🚀 [New: Variadic Arguments](#variadic-arguments) +- 🚀 [New: Added set API to `MutArray`](#added-set-api-to-mutarray) +- 🔥 [Runtime checked conversion of `Json` to struct](#schema-when-parsing-json-into-structs) +- 🔥 [Implicit casting from `Json` to structs](#implicit-casting-from-json-to-structs) +- 🚀 [New: Added `addFile` API to `cloud.Bucket`](#added-addfile-api-to-bucket) +- 🚀 [New: Wing Libraries](#packaging-wing-libraries) +- 🔥 [Directory Modules](#directory-modules) +- 🚀 [New: `fs` module](#fs-namespace) +- 📅 [Upcoming Events](#upcoming-events) +- 🎥 [The Wingly Update](#the-wingly-update) + +### Variadic arguments + +Wing now supports [variadic arguments](https://en.wikipedia.org/wiki/Variadic_function) for function type declarations. This feature is also supported when bringing JSII libraries, filling a gap that might have been a blocker for some users. + +![variadic_1](./assets/2023-09-20-magazine-005/variadic_1.png) +![variadic_2](./assets/2023-09-20-magazine-005/variadic_2.png) + +❤️ [Marcio Cruz](https://github.com/marciocadev), [Chris Rybicki](https://github.com/Chriscbr), and [Lance Janssen](https://github.com/Lancear) ❤️ + +### Added `set()` API to `MutArray` + +New APIs have been added to `MutArray`, Winglang's mutable array object. The `set()` API allows you to change an array value at a particular index, and `insert()` allows inserting an element at a specific (0-based index) position. + +![mutarray_1](./assets/2023-09-20-magazine-005/mutarray_1.png) +![mutarray_2](./assets/2023-09-20-magazine-005/mutarray_2.png) + +❤️ [Gary Sassano](https://github.com/garysassano), [Ananthu C V](https://github.com/WeepingClown13) ❤️ + +### Schema when parsing JSON into structs + +Winglang now supports runtime checking for JSON objects. A `MyStruct.fromJson()` and `MyStruct.parseJson()` static methods are automatically generated for structs and perform schema validation based on the struct declaration. This method allows you to convert input data into a struct while doing runtime validation. If the input doesn't match the expected schema, a proper error message is generated. + +![runtime_json1](./assets/2023-09-20-magazine-005/runtime_json_1.png) + +❤️ [Hasan Abu-Rayyan](https://github.com/hasanaburayyan) ❤️ + +### Implicit casting from `Json` to structs + + +A new compiler feature allows for automatic "inference" or casting of JSON objects to structs, if the types structurally match. This makes it easier to use JSON objects as structs and reduces the amount of type specification code you have to write. + +![json_casting1](./assets/2023-09-20-magazine-005/json_casting_1.png) +![json_casting2](./assets/2023-09-20-magazine-005/json_casting_2.png) + +❤️ [Mark McCulloh](https://github.com/MarkMcCulloh) ❤️ + +### Added `addFile()` API to `Bucket` + + +A new API called `addFile()` has been added to the bucket object. This is a *preflight API* which can be used to populate files into a bucket during deployment. + +![addfile_bucket](./assets/2023-09-20-magazine-005/addfile_bucket_1.png) + +❤️ [Akhil Narayandas](https://github.com/0018akhil) ❤️ + +### Packaging Wing Libraries + + +With the new subcommand `wing pack`, you can now package up your Wing project as a library and publish it to npm. It produces an npm-compatible tarball that can be published and installed. + +❤️ [Chris Rybicki](https://github.com/Chriscbr) ❤️ + +### Directory modules + + +Another addition from [Chris Rybicki](https://github.com/Chriscbr) is the ability to `bring` in and access entire directories instead of just individual files. Now, within these directories, users can access types, subdirectories, and their contents. This enhancement not only aids in organizing projects within Winglang but also serves as a foundational step towards supporting Wing libraries. + +❤️ [Chris Rybicki](https://github.com/Chriscbr) ❤️ + +### `fs` Namespace + + +Wing now has a comprehensive file system module. It covers standard file operations but also integrates unique functions for reading and writing JSON and YAML. An awesome feature is the normalization of file paths: by default, all returned paths from these operations will use forward slashes, standardizing file paths across platforms. We believe this approach will provide consistency and ease for developers working in mixed platform environments. + +❤️ [Jade Zheng](https://github.com/jianzs) ❤️ + +### Upcoming Events + +**🔥 Live Workshop - December 6th @4:30 - 6pm IST** +Get hands-on with [Eyal Keren](https://github.com/ekeren) as he walks us through the process of constructing a full-fledged React.js application using Winglang. +For more information and to register, [click here](https://www.eventbrite.com/e/winglang-react-workshop-tickets-754616256537?aff=oddtdtcreator). + +### The Wingly Update + +**[The Wingly Update](https://www.twitch.tv/winglangio)** is our biweekly stream where we share the latest developments of the project, chat with folks from the cloud industry, geek out and celebrate the beauty of the cloud. + +If you haven't been able to catch our show, don't fret! You can find the complete stack of [all our episodes here](https://youtube.com/playlist?list=PL-P8v-FRassZBWsNoSafL_ReO0JO0xJVm&si=trffVrtGGMUZ-SKb). + +Here are a few segments from the show we thought might be interesting to check out: + +- [How to maintain state in a simulated Wing resource?](https://youtu.be/wJVT1DaH8lA): In this clip from The Wingly Update #21, [Elad](https://github.com/eladb) walks through storign state when building simulated resources in Winglang. +- [Winglang CHANGELOG Segment](https://youtu.be/AXQ-eIhpYto): In this clip from The Wingly Update #21, Mark walks us through the latest updates in Winglang, such as access modifiers for types, filtering tests, running multiple tests simultaneously with ‘awscdk’, testing and ‘inflight’ in Azure, and more! +- [How to build and test container-based apps in Wing?](https://youtu.be/3kFcyzKt3MU): Containers are finally taking flight! In this video from The Wingly Update #20, Elad and Eyal are playing around with containers in Wing. They show how local simulation works with Docker and how apps can be seamlessly deployed to Kubernetes through Helm. +- [Winglang Meets Darko Mesaroš from AWS](https://youtu.be/KivcGZPIRB0): In this clip from The Wingly Update #19, Darko Mesaroš - an AWS Developer Advocate, joins the show. Tune in to hear about Darko’s background as a developer advocate, his hobby of collecting old computers and his ideas and suggestions for Wing. + +### Summary + +And that’s a wrap for this edition! + +If you’re not already, make sure to keep following the latest updates and changes in our [repo](https://github.com/winglang/wing). + +You'll find us regularly mingling on [Slack](https://t.winglang.io/slack), so feel free to introduce yourself, and if you haven't yet, give [winglang.io](https://winglang.io) a visit and take Wing out for a spin. + +See you in our next flight! (sorry, but we just can't help it with the puns...) diff --git a/blog/assets/2023-09-20-magazine-005/addfile_bucket_1.png b/blog/assets/2023-09-20-magazine-005/addfile_bucket_1.png new file mode 100644 index 000000000..c8cad1d06 Binary files /dev/null and b/blog/assets/2023-09-20-magazine-005/addfile_bucket_1.png differ diff --git a/blog/assets/2023-09-20-magazine-005/json_casting_1.png b/blog/assets/2023-09-20-magazine-005/json_casting_1.png new file mode 100644 index 000000000..9adf02097 Binary files /dev/null and b/blog/assets/2023-09-20-magazine-005/json_casting_1.png differ diff --git a/blog/assets/2023-09-20-magazine-005/json_casting_2.png b/blog/assets/2023-09-20-magazine-005/json_casting_2.png new file mode 100644 index 000000000..274c3f07e Binary files /dev/null and b/blog/assets/2023-09-20-magazine-005/json_casting_2.png differ diff --git a/blog/assets/2023-09-20-magazine-005/mutarray_1.png b/blog/assets/2023-09-20-magazine-005/mutarray_1.png new file mode 100644 index 000000000..da0877da0 Binary files /dev/null and b/blog/assets/2023-09-20-magazine-005/mutarray_1.png differ diff --git a/blog/assets/2023-09-20-magazine-005/mutarray_2.png b/blog/assets/2023-09-20-magazine-005/mutarray_2.png new file mode 100644 index 000000000..065597e89 Binary files /dev/null and b/blog/assets/2023-09-20-magazine-005/mutarray_2.png differ diff --git a/blog/assets/2023-09-20-magazine-005/runtime_json_1.png b/blog/assets/2023-09-20-magazine-005/runtime_json_1.png new file mode 100644 index 000000000..03d228a0d Binary files /dev/null and b/blog/assets/2023-09-20-magazine-005/runtime_json_1.png differ diff --git a/blog/assets/2023-09-20-magazine-005/variadic_1.png b/blog/assets/2023-09-20-magazine-005/variadic_1.png new file mode 100644 index 000000000..7e24e2a3d Binary files /dev/null and b/blog/assets/2023-09-20-magazine-005/variadic_1.png differ diff --git a/blog/assets/2023-09-20-magazine-005/variadic_2.png b/blog/assets/2023-09-20-magazine-005/variadic_2.png new file mode 100644 index 000000000..f0ae45207 Binary files /dev/null and b/blog/assets/2023-09-20-magazine-005/variadic_2.png differ