IHP v0.9 is out!
Tags: functional, haskell
Published: 2021-03-01 15:39:04

**Better performance, new plugins, logging, websockets, more query builder functions and more!**

On friday we released a new version of IHP - the productivity-focused, magical-feeling-inducing haskell web framework for the future!

To celebrate, here's the some of the awesomeness you can try out right now, after following the [Getting Started Guide](https://ihp.digitallyinduced.com/Guide/index.html):

# New plugins

While we're still developing the plugin API, we're already building some for you to use! This way we can make sure that the API makes sense and supports all use-cases. Now, with the new release, you can use these two new plugins with your IHP Apps:

## ihp-sentry

Error reporting is vital to web app development, and sentry is a popular solution for this. As such, it's now easier than ever to integrate it into your IHP app. Check out the plugin's readme for details on how to get it running inside your IHP app: https://github.com/digitallyinduced/ihp-sentry.

## ihp-zip

Sometimes your users want to download a lot of files at once. Especially with the DSGVO, users could always request all their data from your website. What better way to handle this than implementing a simple zip-download containing everything they ask for? Previously this might've been a hassle, but now with the new ihp-zip plugin, it's a breeze. Just like before, check out the plugin's readme for installation and usage instructions: https://github.com/digitallyinduced/ihp-zip.

# WebSockets

IHP has always used websockets to update the frontend, and now you can easily use a custom websocket connection too! Just think of the possibilities: chat applications, real-time updates, games...

Of course, to get started you'll have to learn how to tap into this newfound power. Don't worry, we've got you covered: https://ihp.digitallyinduced.com/Guide/websockets.html.

# Better Performance

Everyone loves themselves a faster server. It's best when you don't even have to do anything to get the benefits. So, IHP v0.9 uses GHC's new non-moving memory, which should improve performance of all those awesome IHP apps out there! (Not that there was a performance issue before... But faster is always better, isn't it?)

# Logging

We've already talked about error reporting. However, logging is just as important. And IHP now has its own Logging module ready for you to use! Say goodbye to `putStrLn`, and say welcome our new overlords `Log.debug`, `Log.info`, `Log.error`, `Log.warn`, `Log.fatal` and `Log.unknown`! You can even customize what a single line of logging looks like. Check out the detailed documentation: https://ihp.digitallyinduced.com/Guide/logging.html.

# Query Builder Functions

There's a whole bunch of these:

## `withTransaction`

...allows you to run multiple queries in a single database transaction.

## `setJust`

...so you can simply do `project |> setJust #userId (get #id user)` instead of `project |> set #userId (Just (get #id user))`.

## `distinct`

To remove duplicate rows from your query results.

...and more!

# Increased Magic

Yepp, you heard that right. Actually this is related to AutoRoute. You can finally use more than just UUIDs and `Id Project`-like arguments for your controllers, without having to manually configure `parseArgument`. This simply means: less boilerplate, more magic, more productivity! We wrote it, so you don't have to.

# Conclusion

This release held a bunch of awesome things, and we're happy that it's finally out there. If you want to read up on all the other awesome things that changed, here's the link to the changelog on Github: https://github.com/digitallyinduced/ihp/releases/tag/v0.9.0.

If you still haven't checked out IHP, now's as good a time as any. Also, join us in our community Slack: https://ihp.digitallyinduced.com/Slack.

That's it! Tell us what your favorite feature of this release is, and till next time!