Monkey v1.0.0 is out!

Monkey was started on 2001 and after years of development we are very proud to announce the availability of our new major release: Monkey v1.0, codename Monkey I/O. This major release reflects our community effort to produce a high qualilty web server for embedded devices taking the most of Linux Kernel to hit great performance with low resources usage.

This version is faster than previous ones, many optimizations and improvements have been made in the scheduler, memory management and in the core in general.

What is new ? What has changed ?

Here is a list of the most relevant changes on Monkey v1.0:

  • Code cleanup
  • GCC: Make monkey compile on gcc 4.7
  • Core: improve memory management
  • Core: On segfault, print the stacktrace
  • Core: fix initial bind address when using IPv6
  • Core: new SAFE_FREE macro (./configure --safe-free)
  • Scheduler: optimize connection queues
  • Scheduler: Protect the wid init with a mutex
  • HTTP: do not perror() when sendfile() fails
  • HTTP: assign default host before HTTP parsing
  • HTTP: fix keep_alive initial value on session_request
  • HTTP: fix Host header parser
  • HTTP: validate port value after numeric conversion
  • Socket: fix mk_socket_ip_str() for IPv6
  • Socket: Fix possible overflow
  • Request: Optimize mk_request_init
  • Request: fix memory leak when invoking premature close
  • Clock: improve time strings concurrent access
  • File: add new field 'exists' to the struct file_info
  • File: set the proper O_NOATIME when applies
  • Utils: Add a gmt text cache for utime2gmt
  • QA: Improved quality assurance tests
  • Debug/Environment: implement MK_TRACE_FILTER and MK_TRACE_BACKGROUND
  • Configure: compile output like Linux Kernel style
  • Configure: install man pages to the correct path
  • Configure: do not install not compiled plugins
  • Auth: rename mkpasswd utlity to mk_passwd
  • Auth: adapt new Base64 implementation
  • Liana: use monkey api to set a socket non-blocking
  • List: Replace all linked list with mk_list implementation
  • Request: fix memory leak when invoking premature close
  • Clock: improve time strings concurrent access
  • Monkey: implement a POSIX write-lock over the PID file

For full details of the changes made, please check the ChangeLog.


We would like to thanks to the following people who have been involved doing code and bug fixes contributions on this release:

  • Lauri Kasanen
  • Sourabh Chandak
  • Mahesh Gondi
  • Davidlohr Bueso
  • Felipe Astroza Araya
  • Torsten Pfüller
  • Jean-Paul Bonnet
  • Kay
  • Flaushy
  • Felipe Reyes
  • Aldrin Martoq (Brayatan)
  • Jonathan Gonzalez

Join us!

We want to hear about you, our community is growing and you can be part of it!, you can met us in: