"One problem that any software architecture has to deal with is the Schema problem." - Jess Martin In his talk at Effect Days, @jessmartin will explore how DXOS uses Effect Schema to enable a different shape of software. Don't miss it and join us in Vienna 🇦🇹
This Week in Effect - 2024-02-16
Hi Effecters!
Welcome back to This Week In Effect (TWIE), our weekly update that aims to help you keep track of everything that is going on inside our Community and the Effect Ecosystem.
If it’s your first time here, Effect is a powerful TypeScript library designed to help developers create complex, synchronous, and asynchronous programs. One of the key features that sets Effect apart is how it leverages structured concurrency to provide features such as async cancellation and safe resource management, making it easier to build robust, scalable, and efficient programs.
To get started, below you’ll find links to our documentation as well as our guide for installing Effect. Enjoy!
If you’re new to TWIE, here’s a few words on what TWIE is and what it aims for.
We’re happy to witness the community growing so fast, with more and more people adopting Effect, and we understand that it might not be that easy keeping up with everything that is going on in the Effect Ecosystem:
- Our Discord server reached 1889+ members a few days ago and the engagement is at an all-time high.
- We’re approaching our very first Effect Days Conference in Vienna on February 23, 2024, and lots of new content is coming up.
- All projects around Effect are receiving key updates and there has been a lot of activity on GitHub.
So, we wanted to make it easy for you to find all the info you need to fully enjoy your Effect journey!
And, that’s why we created TWIE – a weekly update to inform you about key events about Effect in the previous week, both from the community (Discord discussions, X posts, YouTube content, etc.) and from a technical standpoint.
In this way, we want to help you stay on track with everything happening in the Effect Ecosystem and actively engage with our community.
Now, back to business!
Big news of the week: Effect 2.3 has been released! Read the release post here!
- Consolidate Effect and Stream async methods (next-minor)
- Swap Either type params (next-minor)
- Swap Schedule type parameters (next-minor)
- Fix type parameter order in API signatures (next-minor)
- Remove Effect.unified and Effect.unifiedFn in favour of Unify.unify (next-minor)
- ReadonlyRecord: re-add symbol as valid key to some APIs (next-minor)
- Add support for optional properties to pick, omit and get (next-minor)
- Swap GroupBy type params (next-minor)
- Add Do notation for Either (next-minor)
- Revert some type param adjustments in FiberSet
- Default to never for Runtime returning functions
- Optimize Effect.zip Left & Right
- Remove no longer necessary ./internal/timeout
- Expand Either and Option andThen
- RateLimiter.withCost combinator + Rate Limiter composition tests
- Ensure RateLimiter utilizes the token-bucket algorithm
- Ensure large semaphore takes don’t block smaller ones
- Fix the return order of batched requests
- Expose Random Tag and functions to use a specific random service implementation
- Fix internals of TestAnnotationsMap making it respect equality
- Add functional analogue of satisfies operator
- Fix Cause.pretty when toString is invalid
- Fix withRandom and withClock types
- Relax FiberRefs, make None behave like Runtime
- Generate a random span id for the built-in tracer
- Add RequestResolver.aroundRequests api
- Flipped scheduleForked types to match new signature
- Add Runtime.updateFiberRefs/setFiberRef/deleteFiberRef
- Expose ModuleVersion
- Avoid incrementing cache hits for expired entries
- Fix Hash implementation for Option.none
- Change MessageAnnotation to be non parametric
- Add transformation option to pluck
- Make headOr dual
- Add support for unions to keyof
- Use the identity function in the transformation defining a schema class
- ParseResult: add missing decode / encode exports
- Refactor the declare signature to ensure that the decoding and encoding functions do not utilize context
- Allow passing structs when encoding schema classes
- Add exact optional argument to the partial API
- Add a note about encoding options
- Improve type extraction for Router.fromIterable
- Add XMLHttpRequest client to @effect/platform-browser
- Add Scope to Http client (minor)
- Use Schema.TaggedError for worker errors
- Add a way to redact HTTP headers
- Add unsafe body accessors to node http IncomingMessage
- Fix incorrect removal of scope in Client.schemaFunction
- Fix changesets for rpc
- Add rpc Router.provideService and Router.provideServiceEffect
- Add non-streaming handlers and resolvers to rpc
- Make Rpc.Request compatible with Persistence
We welcomed 32 new Effecters last week! Thank you for joining the community and we look forward to your active participation in our ever-growing family!
We’re less than a week away from Effect Days and we really can’t wait to meet you all in Vienna!
For all of you who may have not heard about it, from the 22nd to the 24th of February, we’ll have a 3-day event where we’ll unfold the future of Effect.
You’re a last-minute person, don’t you? Here, you’ll find the few spots left for the Conference and our stunning speaker lineup.
For all of our attendees, we published a guide to make your stay in Vienna as comfortable and enjoyable as possible.
Let’s get to our speakers sneak peeks on our X profile:
Jess Martin:
David Blass:
What does it mean to discriminate a union structurally? David Blass @ssalbdivad will give us a deeper understanding of the set theory at the heart of TypeScript and how @EffectTS_ & @arktypeio leverage it to improve static and runtime performance and make your code safer. See…
John De Goes:
Get ready for an enlightening session at Effect Days next week with John A. De Goes @jdegoes, the creator of @zioscala! ZIO's groundbreaking features have reshaped developer experience and influenced the evolution of Effect. Secure your spot, and see you in Vienna! 🇦🇹
That’s all for this week. Thank you for being a vital part of our community. Your feedback and requests are highly valued as we fine-tune this new format. Feel free to share your thoughts, and we’ll do our best to tailor it to the needs of our community.
The Effect Community Team