Skip to content

v1.0.0-rc1

Pre-release
Pre-release
Compare
Choose a tag to compare
@lilith lilith released this 01 Sep 05:44

Hi folks! This release marks stability in the Imageflow C API for in-process use.

Breaking changes to the JSON API with 1.0 RTM are also unlikely, but possible. Since the November release of the JSON API and the December release of imageflow_server, fewer than five of you have provided feedback, and none of it was about the JSON API.

I'm a strong believer in user-feedback-driven design, so I hope that more of you will download 1.0.0-rc1 and alert me to any rough edges. As a solo developer, some blind spots are inevitable.

As before, imageflow_tool examples --generate is the best way to get started with the JSON API.

Nearly all planned features are present. Those missing (watermarking, whitespace detection, and animated gif encoding) will be introduced in backwards-compatible 1.x releases soon. I expect to introduce a lot more node types to the JSON API after I collect more feedback and use cases.

Source code for C# and Ruby bindings can be found in /bindings/ruby/ and /bindings/dn/ respectively. These bindings haven't been packaged yet, but are tiny (300 and 600 lines of code) enough to easily embed as source files in your program. Ensure that imageflow.dll or libimageflow.so/.dylib is in your load path.

Rust's HTTP ecosystem has been a bit of a curveball. It wasn't in bad shape last year - kinda pre-release-y, with a inconvenient bug or two. I expected a linear continuation of improvement over the next months, but it instead took a dive in Futures and Async. It's a great long-term goal - and when it's more mature I hope to make Imageflow fully async. But the stack shifted sideways towards new directions rather than upward to production-perfect. So, for now, you'll want to put imageflow_server behind a reverse proxy like NGINX or IIS/Application Request Routing (both of which offer disk caching).

I've been running imageflow_server in demo mode as an image proxy for the last six months. Even with caching disabled it's pretty reliable and quick.

All imageflow APIs allow you to use querystring commands just like ImageResizer 4. Imageflow has feature parity for 99% of users.

I've continued to reduce the attack surface for Imageflow. Nearly every complex part has been ported from C to Rust. giflib has been replaced by a Rust codec, leaving just libpng, LittleCMS, and libjpeg-turbo 1.5.1 (which was recently audited). OpenSSL is only used on Linux - on Windows and OS X, operating system APIs are used instead.