midori

This project is still not production-ready. Questions, suggestions and pull requests are highly welcome.

Backers on Open Collective Sponsors on Open Collective

Logo and Slogan

Description

Midori is a Ruby Web Framework, providing high performance and proper abstraction.

midori midori-contrib murasaki midori_http_parser
midori logo midori logo midori logo midori logo
Web Framework Official Extensions Modularized Event Engine HTTP Parser
Build Status Build Status Build Status Build Status
Test Coverage Test Coverage Test Coverage Test Coverage
Maintainability Maintainability Maintainability Maintainability
Dependency Status Dependency Status Dependency Status Dependency Status
doc doc doc doc
Gem Version Gem Version Gem Version Gem Version
license license license license

Requirements

  • Ruby >= 2.3.6

Installation

gem install midori.rb

With Bundler

gem 'midori.rb'
bundle install

FAQ

Performance

Following benchmark results testing {msg: "Hello"} JSON response by visiting GET / with a single-core, 4GB memory, UCloud Linux instance.

Note: Performance under Mac OS X needs to be further improved. wrk gives very bad performance result. The following result is tested under Linux.

framework version req/s
Rails (Thin, Ruby 2.5.0) 5.0.6 537.01
Rails (API Mode, Thin, Ruby 2.5.0) 5.0.6 826.56
Sinatra (Thin, Ruby 2.5.0) 2.0.0 1216.17
express.js (Node.js 9.3.0) 4.16.0 5463.82
midori (Ruby 2.5.0) 0.5.0 4069.87

Name

The name midori comes from midori machi, which was the place I stay on my first travel to Tokyo.

Semantic Versioning

Version consists of four numbers:

Milestone Major Minor Patch
Example 1. 2. 1. 5
Explanation Milestone version Incompatible API changes Add feature Fix bugs

Note: Before version v1.0, there's no minor version API compatible ensuring.

Contributing

See Contributing Guidelines before you leave any comment. This project exists thanks to all the people who contribute.

Tutorial & Example

There is an unfinished tutorial available here.

There is also an example showing how to use midori with a todo-list web app available here.

Roadmap

Development roadmap has been moved here.

Detailed release notes for published versions can be seen here.

Midori 2 Goals

  1. Support HTTP/2
  2. Support RPC Server
  3. Add MVC abstraction example with scaffold
  4. Improve performance of eventloop
  5. More examples on using midori

Backers

Thank you to all our backers! 🙏 [Become a backer]

Sponsors

Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]