Giter VIP home page Giter VIP logo

andrew-canaday / libyimmo Goto Github PK

View Code? Open in Web Editor NEW
4.0 4.0 0.0 1.16 MB

Lightweight HTTP and Websockets framework for C (with optional WSGI server)

Home Page: http://blog.yimmo.org/yimmo/

License: GNU General Public License v3.0

Makefile 3.30% Shell 4.74% C 74.92% Python 0.98% M4 14.81% HTML 0.29% Dockerfile 0.34% JavaScript 0.49% Gnuplot 0.13%
c websockets wsgi http rfc6455 freesoftware

libyimmo's Introduction

libyimmo

Configure, Make, and Check Server Tests Yimmo-WSGI Docker Image Create Release on Tag

Disclaimer

⚠️ WARNING: This is my long running, spare time, for fun, project. Most of it works pretty well (it's pretty fast!), but it also bears the marks of being my on-again/off-again, personal C-refresher/protocol exploration playground...

πŸ™Œ I use gunicorn for my production WSGI workloads and libwebsockets for websockets. Check 'em out!


βœ‹ I'm not accepting PR's, at the moment β€” there's a bit of refactor in flight and some procedural things to resolve re: code contributions.

Please feel free to have a peek! It's GPL'd, so you are free to fork it and hack around!

(Just mind the cobwebs).


πŸ‘ Issues are welcome, though! If you're tinkering with the library and discover a bug, have a feature request, or want to surface a usability issue, please feel free! (Documentation issues are also welcome, though the odds are high it's already on one TODO list or another).

Bonus points: if you add a label.

Introduction

Yimmo (Yup, I Made My Own) is a streaming socket framework. The I/O architecture is a traditional reactor pattern which uses libev for I/O readiness notifications.

πŸ’‘ Want to get the gist in a hurry?

License

This project is licensed under version 3 of the GNU GPL (see LICENSE).

ℹ️ NOTES:

Many auxiliary files are licensed under more permissive licenses, e.g.:

  • scripts, Dockerfiles, and silly things like that (MIT)
  • example code (MIT)

Licenses should be declared pretty explicitly, but I'm sure I missed some (also on the TODO list...along with some specific GPL exemption declarations β€”Β this should all be in place for the 0.1.0 release).

Except where otherwise explicitly stated, the files contained herein are subject to the terms defined by the GNU General Public License v3, as published by the Free Software Foundation.

Documentation

Features

  • HTTP 1.0
  • HTTP 1.1
  • RFC6455 WebSockets
  • WSGI

Planned/Partial

  • MQTT (partial)
  • HTTP2 (WIP)

Building

This library is built using C11 (but attempts to accommodate other C standards using a autoconf macros and compiler extensions).

Dependencies

Libyimmo requires the following third party libraries:

Setup

Before anything else is done, your source directory has to be initialized:

./autogen.sh

Compiling

Libyimmo compilation follows the standard GNU idiom:

# To see a list of configuration options:
./configure --help

# PRO TIP: do your builds outside of the project root!
mkdir -p ./build && cd ./build
../configure --prefix=/usr/local && make && make check && make install

Gisty Benchmarks

Moved here.

libyimmo's People

Contributors

andrew-canaday avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.