Skip to content

Releases: Mahinkumar/Nano_image_server

Nano Image Server v0.7.0-beta Release

Pre-release

Choose a tag to compare

@Mahinkumar Mahinkumar released this 08 Oct 06:47
a4f86a6

Nano Image Server - v0.7.0-beta

This is the Fourth beta release of Nano Image server. This release includes the following new additions,

1. S3-FIFO Caching.

Nano Image server now has full caching mechanism which can be enabled during the build time. The caching system is based on the S3-FIFO Caching algorithm implemented from scratch for Image specific workloads.

Performance improvements

  • Average of 10% increase in requests/second
  • 80%+ cache hit rates on typical workloads
  • Millisecond response times for cached images

Performance Graphs

image image image image

Known limitations

  • Cache thrashing occurs when working with image sets exceeding cache capacity
  • P99 latency slightly higher due to eviction complexity of S3FIFO implementation

Usage

To enable caching system use the following parameters.

cargo build --release --features cache 

To use the caching system with custom size limit

# Default size is 100 images
./nano_image_server --cert-path ./certs --cache-capacity <count>

2. Improved debugging error messages.

Nano Image server now uses more streamlined error handling process.
The server displays appropriate codes in case of an error.

v0.6.0-beta Release

v0.6.0-beta Release Pre-release
Pre-release

Choose a tag to compare

@Mahinkumar Mahinkumar released this 26 Jul 19:06

Nano Image Server - v0.6.0-beta

This is the third beta release of Nano Image server. This release includes the following features,


Nano Image server now requires HTTPS. You will have to setup TLS certificates to use it.

# Use the script (keygen.sh) accompanied to generate a sample (Linux).
chmod u+x keygen.sh # For permission to execute
./keygen.sh 

You will need to pass the certificate's folder path as argument

# For the below structure present in root directory

# sample_certs/
# ├─ cert.pem
# ├─ key.pem

# You will pass the arguments with the -c flag. 
# Refer with --help for more info

./nano_image_server -c ./sample_certs

Image processing is now an optional feature that can be configured in during compilation.

V0.6.0-beta does not include image processing by default but you can opt in by the following method during building

cargo build --release -F processing 

Note: The caching system is not included with v0.6.0-beta as the in-work system needs further improvements to ensure reliability.

Full Changelog: v0.5.0-beta...v0.6.0-beta

v0.5.0-beta

v0.5.0-beta Pre-release
Pre-release

Choose a tag to compare

@Mahinkumar Mahinkumar released this 23 Jan 05:18
b2dbc5e

Nano Image Server - v0.5.0-beta

Hello everyone, this is my second beta release of Nano Image Server. This release brings the most awaited feature for an image server, The caching system. It also has a more optimized image processing stack and some quality of life changes.

Cache

v0.5.0-beta brings a single tier caching system with caches stored on your secondary memory and invalidation based on storage limits. Expect very huge speedups for repeating requests. A Memory based caching system and a ttl based secondary cache for a multi tier cache system is also under works, Star the repository for future release updates.

Optimized image processing stack

A more optimized code path for image processing stack. If you perform filters, resizing, processing and transforms in combination you will see performance improvements in your use case. This is possible as earlier the processing stack had an overhead of repeated encoding and decoding for every operation. v0.5.0 beta now only performs encode and decode once and only if needed.

Other changes

Some other changes includes new CLI features and new flags for Using custom hosting ports and url paths, disabling caching. CLI flags are now more streamlined.

Full Changelog: v0.4.1-beta...v0.5.0-beta

Benchmarks

These are some benchmarks for direct image requests using oha. Take it with a pinch of salt as perfomance will hugely vary based on the use case and hardware.

image

Benchmark command: oha --urls-from-file tests.txt -n 1000000 -c 12 --latency-correction --disable-keepalive --no-tui
The tests.txt file contained 20 different image file request without any image processing. The 20 images vary in sizes from 4k and greater to 720p distributed.

v0.4.1-beta

v0.4.1-beta Pre-release
Pre-release

Choose a tag to compare

@Mahinkumar Mahinkumar released this 21 Jan 15:09
b193657

Changes

  1. Update CLI Methods
  2. Add basic templates for console

Full Changelog: v0.4.0-beta...v0.4.1-beta

v0.4.0-beta

v0.4.0-beta Pre-release
Pre-release

Choose a tag to compare

@Mahinkumar Mahinkumar released this 20 Jan 08:23
12cef3b

Nano image server v0.4.0-beta

I'm excited to announce the first beta release of Nano image server, a lightweight, blazingly fast image serving solution with on-the-fly image processing capabilities. GPU support and caching are planned before the stable release. Star the repository for the future updates.

Changes

  • New processing modes Invert and Unsharpen.
  • Add configurable port flags
  • Simplified processing parameters
  • Add optimal resize algorithm

Core Features

  1. Asynchronous, memory-safe, and thread-safe architecture built on axum and tokio runtime.
  2. Blazingly fast image delivery with minimal latency
  3. Simple deployment with straightforward image folder configuration
  4. Cross-platform support for Linux and Windows

Supported operations

Filters:

  • Blur
  • Grayscale
  • Brightness adjustment
  • Contrast enhancement

Transforms:

  • Horizontal and vertical flipping
  • Rotation (90°, 180°, 270°)
  • Hue rotation

Processing:

  • Image inversion
  • Unsharpening

Supported Image formats

The following formats are supported via encoders and decoders from the Image-rs Library

Format Decoding Encoding
AVIF Yes * Yes (lossy only)
BMP Yes Yes
Farbfeld Yes Yes
GIF Yes Yes
HDR Yes Yes
ICO Yes Yes
JPEG Yes Yes
EXR Yes Yes
PNG Yes Yes
PNM Yes Yes
QOI Yes Yes
TGA Yes Yes
TIFF Yes Yes
WebP Yes Yes (lossless only)

Visit docs for references and usage.
Full Changelog: v0.3.2-alpha...v0.4.0-beta

v0.3.2-alpha

v0.3.2-alpha Pre-release
Pre-release

Choose a tag to compare

@Mahinkumar Mahinkumar released this 07 Jan 04:22
095261c

Add support for format aware encoding and decoding

Earlier releases of nano image server was limited to JPEG encoding and decoding. The image format sent to client is always JPEG format regardless of source file format. After this release the encoder and decoder respects file formats and works accordingly.

The following formats are supported via encoders and decoders from the Image-rs Library

Format Decoding Encoding
AVIF Yes * Yes (lossy only)
BMP Yes Yes
Farbfeld Yes Yes
GIF Yes Yes
HDR Yes Yes
ICO Yes Yes
JPEG Yes Yes
EXR Yes Yes
PNG Yes Yes
PNM Yes Yes
QOI Yes Yes
TGA Yes Yes
TIFF Yes Yes
WebP Yes Yes (lossless only)

Full Changelog: v0.3.1-alpha...v0.3.2-alpha

v0.3.1-alpha

v0.3.1-alpha Pre-release
Pre-release

Choose a tag to compare

@Mahinkumar Mahinkumar released this 05 Jan 12:23
dfe8c17

Add New Transforms

  • Flip horizontal
  • Flip Vertical
  • Rotate (90deg, 180deg, 270deg)
  • Hue rotate

Full Changelog: v0.3.0-alpha...v0.3.1-alpha

v0.3.0-alpha

v0.3.0-alpha Pre-release
Pre-release

Choose a tag to compare

@Mahinkumar Mahinkumar released this 04 Jan 03:22
6272254

Add New filters

  1. Blur
  2. Grayscale
  3. Brighten
  4. Contrast

Refactored code for efficiency and readablity

Full Changelog: v0.2.0-alpha...v0.3.0-alpha

v0.2.0-alpha

v0.2.0-alpha Pre-release
Pre-release

Choose a tag to compare

@Mahinkumar Mahinkumar released this 31 Dec 03:25
449dd10

v0.2.0 - Major Performance Improvements 🚀

Key Features

Standard Improvements

Separated image processing and static file serving algorithms.
All reads from server are now asynchronous using tokio rs.
Optimized request handling architecture.
Improved memory management for image processing.

Resize Algorithms

Choose from several resize algorithms for resizing using the resfilter query.
Availible filters are,

  1. Nearest
  2. Triangle
  3. Catmullrom
  4. Gaussian
  5. Lanczos

Performance Improvements

Without Image Processing

  • Dramatic Performance Boost on request without image processing
  • Reduced Latency: 8 ms on average
  • Optimized Transfer Rates

With Image Processing

67% Faster image processing compared to previous version
40% Lower Latency compared to previous version
Processing is now more memory efficient.

Update Notes

  • Implemented separate processing pipelines for static and dynamic requests
  • Optimized memory allocation for image operations
  • Enhanced concurrent request handling
  • Reduced processing overhead for non-image requests
  • Add new resize filters

Benchmark Results

image

Full Changelog: v0.1.1-alpha...v0.2.0-alpha

v0.1.1-alpha

v0.1.1-alpha Pre-release
Pre-release

Choose a tag to compare

@Mahinkumar Mahinkumar released this 28 Dec 08:09
11ee86b

Release v0.1.1 Alpha - Nano Image Server

The new version of Nano Image server brings several performance improvements across the board. This was possible as we moved to more faster, natively optimized image-rs library and update read and write codes for efficiency.

image

Key Improvements in overall

🚀 70.9% increase in request handling
⚡ 41.5% faster response time
📈 194.3% improvement in transfer rate
⏱️ 41.5% reduction in total processing time

Full Changelog: v0.1.0-alpha...v0.1.1-alpha