

Fixed 28723 – steam_set_stat_float doesn’t work correctly.Fixed 28946 – font_add_sprite_ext(spr, str, true, 0) when using SWF for “spr” crashes the runner.Fixed 27413 – GM_version returned only 3 parts of the version number on several platforms.Fixed 28933 – Steam: Leaderboards – Emojis in usernames cause runner crash.Fixed 28894 – Global variables created using the variable_global_set function don’t show up in the watches.

Fixed 21791 – Memory leak when loading/unloading Audio Groups.Fixed 28482 – Asset Compiler crashes if you have /* as your last line.Fixed issues with physics bodies when removing all fixtures and then adding a new fixture.Fixed issues with screen_save() on several platforms.Fixed issues with some string comparisons failing in YYC.Fixed issues with gamepad support on mcOS and Ubuntu.Fixed issue where a view was not updated first when calling camera_apply().Fixed issues with startup sequence when launching a Steam game outside of the Steam client.Instances now correctly inherit Object Variables from parent instance.Fixed an asset compiler crash when a SWF is imported over an existing sprite.Tilemap-management functions tilemap_set_width() and tilemap_set_height() added.Buffer-management functions buffer_compress() and buffer_decompress() added.Use the syntax #macro CONFIG:MACRONAME to override #macro MACRONAME for a given config #macro definitions now support configs.Async network connection events now contain a new ‘other_port’ variable.Support for IPv6 has been introduced within the networking functions – if you find any issues, please send a sample project to the Helpdesk.The audio engine has been consolidated across all platforms and audio synchronisation issues have been fixed.In addition to the new localization, GMS2 contains several other improvements and fixes, details from the release notes: General If you are interested in learning more about GameMaker Studio 2, be sure to check our Closer Look at GameMaker Studio 2 review. German, French and Spanish speakers rejoice, as GMS has be localized to those languages, chosen during the installation process. Notably, they support sequencing, they can be invertible, and their computation graph can be statically analyzed.GameMaker Studio 2.1.4 was just released. Finally, you will note that arrows provide an interesting trade off. You will get a precise understanding of “how much” expressive power you give to your users according to your DSL algebra, and, conversely, “how much” you reduce at the same time the space of the possible DSL interpreters. At the end of the talk, you will have a better intuition of what it means that “arrows are more powerful than applicative functors but yet support more interpreters than monads”. Through examples of DSLs based on real world use cases, I will highlight the differences in expressive power between these three notions of computation (and some of their friends) and present the consequences for both interpreters and DSL users. The goal of this talk is to revisit the relationship between these notions of computation in the context of DSL algebras. It is not new that there exists another notion of computation that sits in between applicative functors and monads: arrows. free applicatives) also aroused interest. Recently, DSLs with an applicative-based algebra (e.g. The end result is more precise types, with static validation guarantees, and a way of loading validated configurations without boilerplate – finally you can stop worrying about your configurations! About SpeakerĭSLs with a monad-based algebra (such as free monads) are becoming popular. We’ll ultimately end up with type-level predicates using Typelevel project refined, and see how we can get PureConfig and refined to work together seamlessly. In the second part we’ll continue by exploring options to encode type invariants, for enforcing validation, looking at how we can get PureConfig to only load validated settings. We’ll however see that it’s still very much possible to load invalid settings. We’ll see how typesafe config is typically used, and see how we can eliminate most boilerplate code with Typelevel incubator project PureConfig. In the first part of this talk we’ll look at the challenges associated with loading configurations. Refined types for validated configurations at 10:30Īre you tired of writing boilerplate code to load configurations? Have you ever had errors because of bad configuration values? Then this talk is for you! In a live-coding session we’ll see how to encode validation rules on the type-level and load validated settings without any boilerplate code.
