After a very long year-and-eight-months since the previous version’s release, LÖVE 0.9.0 is out at last!

The full changelog is massive, easily the biggest in LÖVE’s history (when counting by number of individual changes listed). It can be viewed down below as well as in the Wiki. Here are some of the more noteworthy items:

LuaJIT is now being used by LÖVE by default. Depending on what’s bottlenecking your game’s performance right now, your framerate could skyrocket just by updating to 0.9.0!

ENet: real-time networking in games is a complicated topic. Thankfully, people have created libraries to help deal with some of the lower-level nuts and bolts. One such library is ENet. LÖVE 0.9.0 includes the lua-enet wrapper for the ENet library (alongside the existing general-purpose LuaSocket library), so you can easily use ENet’s features in your games with require("enet").

love.joystick: previous versions of LÖVE had support for joysticks and gamepads, but the love.joystick module was lacking in some key areas.
Version 0.9.0’s joystick module has been completely revamped – Joysticks are now actual LÖVE objects, they can be hot-plugged and removed at will (with event callbacks to match), gamepad motor vibration is now supported, and issues with differences in gamepad buttons and axes across operating systems and gamepad models is now much easier to deal with thanks to the new abstracted Gamepad API.

Windows (not the Microsoft variety): functions for dealing with LÖVE’s window have been split from love.graphics into the brand-new [wiki]love.window[/wiki] module. The new module also includes new functionality (and better handling of the window in general, thanks to SDL 2): it’s now possible to use resizable, borderless, and “fullscreen-desktop” / “fullscreen-windowed” windows, as well as to choose which monitor the window will use.

love.graphics: Along with some general house-cleaning of this module and performance improvements to love.graphics.print, ParticleSystems, and SpriteBatches, lots of new graphics functionality has been added. Arbitrarily textured and colored polygons can be created thanks to [wiki]Mesh[/wiki] objects. [wiki]Shader[/wiki] objects (renamed from PixelEffects) can now be vertex shaders as well as pixel shaders. Mipmapping support has been added to images, compressed texture formats can be used now, and that’s only a handful of the new features in love.graphics.

love.math: Another new module! This one includes mathematical functionality relevant to games: a PRNG (and random number generator objects), polygon triangulation, Bézier curve objects, a Simplex noise generator, and more goodies.

love.thread: The thread module has an entirely new way to communicate between threads: [wiki]Channel[/wiki] objects. It's much more flexible than the old API.

LÖVE 0.9.0 breaks compatibility with nearly every 0.8.0 game.
Several functions have been renamed (and some functionality has been changed or removed) in order to provide a more consistent and clean API experience. Often this will mean simply renaming some functions your game uses, but it will be rare for a game to work completely in both 0.8.0 and 0.9.0 unless it is written to do so.
Check the wiki! It will tell you what the new name of a renamed function is.

0.9.0’s Mac OS X system requirements are higher than 0.8.0’s: it now requires Mac OS 10.6+ and at least an Intel Core 2 CPU (~september 2006 or newer).

Here is the full changelog (or browse the formatted version on the Wiki). My paragraphs above are just a small portion of the full list:

Sweet. My favourite new feature has to be the inclusion of enet. Math module is great too, I don't think anyone liked the standard PRNG. Good job guys.

Do you recognise when the world won't stop for you? Or when the days don't care what you've got to do? When the weight's too tough to lift up, what do you? Don't let them choose for you, that's on you.

No but really, I'm also glad this is out. A lot of the new stuff is pretty cool and it'll help out with everyone's projects! Including Metanet Hunter REMIX! (yes i had to shamelessly do that :p)

"I view Python for game usage about the same as going fishing with a stick of dynamite. It will do the job but it's big, noisy, you'll probably get soaking wet and you've still got to get the damn fish out of the water." -taylor