Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/riolet/WAFer
WAFer is a C language-based software platform for scalable server-side and networking applications. Think node.js for C programmers.
https://github.com/riolet/WAFer
Last synced: about 2 months ago
JSON representation
WAFer is a C language-based software platform for scalable server-side and networking applications. Think node.js for C programmers.
- Host: GitHub
- URL: https://github.com/riolet/WAFer
- Owner: riolet
- License: gpl-2.0
- Created: 2014-07-09T04:02:34.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2017-12-07T22:32:39.000Z (over 6 years ago)
- Last Synced: 2024-03-20T17:45:43.301Z (3 months ago)
- Language: C
- Homepage:
- Size: 329 KB
- Stars: 691
- Watchers: 51
- Forks: 69
- Open Issues: 19
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Lists
- awesome-c - nope.c - C-language-based, ultra-light software platform for scalable server-side and networking applications (think node.js for C programmers). [`GNU GPL2.1`](http://www.gnu.org/licenses/old-licenses/gpl-2.0.html) (Utilities ## / Vim ###)
- awesome-cpp - WAFer - A C language-based ultra-light software platform for scalable server-side and networking applications. Think node.js for C programmers. [GPL2] (Networking)
- fucking-awesome-cpp - WAFer - A C language-based ultra-light software platform for scalable server-side and networking applications. Think node.js for C programmers. [GPL2] (Networking)
- awesome-cpp - WAFer - A C language-based ultra-light software platform for scalable server-side and networking applications. Think node.js for C programmers. [GPL2] (Networking)
- awesome-cpp-completed - WAFer - A C language-based ultra-light software platform for scalable server-side and networking applications. Think node.js for C programmers. [GPL2] (Networking)
- awesome-cpp - WAFer - A C language-based ultra-light software platform for scalable server-side and networking applications. Think node.js for C programmers. [GPL2] (Networking)
- awesome-c-zh - nope.c - 用于可扩展服务器端和网络应用程序 (想想C程序员的node.js)。[](https://spdx.org/licenses/GPL-2.0-only.html) (公用事业 / YAML)
- awesome-cpp - WAFer - A C language-based ultra-light software platform for scalable server-side and networking applications. Think node.js for C programmers. [GPL2] (Networking)
- awesome-cpp - WAFer - A C language-based ultra-light software platform for scalable server-side and networking applications. Think node.js for C programmers. [GPL2] (Networking)
- awesome-cpp-completed - WAFer - A C language-based ultra-light software platform for scalable server-side and networking applications. Think node.js for C programmers. [GPL2] (Networking)
- awesome-cpp-cn - WAFer
- awesome-cpp - WAFer - A C language-based ultra-light software platform for scalable server-side and networking applications. Think node.js for C programmers. [GPL2] (Networking)
- awesome-cpp - WAFer - A C language-based ultra-light software platform for scalable server-side and networking applications. Think node.js for C programmers. [GPL2] (Networking)
README
[![Build Status](https://travis-ci.org/riolet/WAFer.svg?branch=master)](https://travis-ci.org/riolet/WAFer)
# WAFer
WAFer is a C language-based ultra-light scalable server-side web applications framework. Think node.js for C programmers. Because it's written in C for the C eco system, WAFer is wafer-thins with a memory footprint that is only a fraction of that of node.js and other bulky frameworks.
Just copy server.c (say, as myserver.c), put your code inside the function `void server(Request request)` in `myserver.c` and, make with `make SERVER=myserver`, and you are good to go.
WAFer can operate in many different configurations, all selected at compile time. They include:
1. Single-threaded (Default) or multi-threaded (make with `THREADS=n` where n>0)
2. Select(Default) or epoll (make with `LOOP=epoll`) based event loop
3. C10K mode (make with `LOOP=epoll MAX_CON_CONS=n` where n>10,000)
Default port is 4242. Set environment variable 'PORT' to change it.
That's really it. The source comes with a simple example `example.c` to get you started.
### Note to Contributors
Thank you for making this a wonderful project!
Here's our preferred formatting style:
```
find . \( -name '*.c' -o -name '*.h' \) -exec indent --no-tabs --linux-style --line-length 90 --indent-level 4 -bli0 \{\} \;
```### Acknowledgements
1. [J. David Blackstone](http://sourceforge.net/u/jdavidb/profile/) and [Feng Shen](https://github.com/shenfeng), whose web servers have been repurposed to build this platform.
2. [Mark Karpeles](https://github.com/MagicalTux) for the incredible number of bug fixes!
3. [Fine folks at /r/programming](http://www.reddit.com/r/programming/) for the honest and constructive feedback.