Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Inflight Magazine no. 5 #615

Merged
merged 18 commits into from
Dec 4, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
121 changes: 121 additions & 0 deletions blog/2023-12-04-magazine-005.md
Original file line number Diff line number Diff line change
@@ -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.
> <!--truncate-->

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...)
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.