Skull is an event-driven serving framework with multiple modern designs to allow user:
- Fast to create a prototype
- Easy to maintain even a huge project
- Write code in lock-free environment
It helps people to build an application/server extremely fast and strong, high scalability and flexibility in application layer, and with strong performance in engine level. Read more here.
Skull can be used in generic serving layer or embedded device. E.g. web logic server, game server, etc. Want an example? Check this DNSTurbo project, and watch its Trailer on Youtube for a quick start :)
Memory tracing reports:
- Memory Usage
- Cross-Scope Malloc/Free
- Memory Leak
- High Level Introduction
- How To Start
- How to Test
- How to Deploy
- Monitoring
- API Docs - Cpp
- API Docs - Python
- Integrate with Nginx
Use Ubuntu18.04 as an example. (Tested on Debian jessie/stretch
, Ubuntu 14.04/16.04/18.04
, alpine 3.6/3.8
, RHEL6/7
and Raspbian jessie/stretch
)
Skull requires:
Platform
: LinuxC/C++
: Compiler supports at leastc99
/c++11
standards or higherPython
: Python3
# Install System Dependencies
sudo apt-get install autoconf libtool valgrind expect python3-dev python3-pip;
sudo pip3 install PyYAML pympler WebOb;
# Clone and Build Dependencies (For example: project folder is 'skull')
cd skull && git submodule update --init --recursive;
# Compile and install dependencies
make -j4 dep; sudo make install-dep;
make -j4
sudo make install
Notes:
- To disable
jemalloc
, usemake -j4 disable_jemalloc=true
to build it - For some Linux Releases, we might need to use
CFLAGS
,CXXFLAGS
,LDFLAGS
to finish the build
More Options:
python_path
: By default it's python3, but we can override it to another path for testing purpose
Also, the Docker images are ready now, if people don't want to waste time to set up a brand new environment, we can run the Docker image directly within 1 min :)
Assume that we've already installed Docker, then apply the following commands to pull and run the image to bring user into a development ready environment super fast:
-bash$ docker pull finaldie/skull:1.2-build
-bash$ docker run -it finaldie/skull:1.2-build
And the below table is the current images:
Tag | Dockerfile | Notes |
---|---|---|
1.4 | (Dockerfile) | 1.4 Debian runtime image |
1.4-build | (Dockerfile) | 1.4 Debian dev/building image |
1.4-ubuntu | (Dockerfile) | 1.4 Ubuntu runtime image |
1.4-ubuntu-build | (Dockerfile) | 1.4 Ubuntu dev/building image |
1.4-alpine | (Dockerfile) | 1.4 Alpine runtime image |
1.4-alpine-build | (Dockerfile) | 1.4 Alpine dev/building image |
After installing Skull into the system, run the following steps to create a Skull project, have fun :)
Notes:
- By default, a new module contains the example code which is used to echo-back message
- Above creation is for
C++
module, typepy
in language selection step if needed
Name | Description |
---|---|
DNS Client | Async DNS client for A/AAAA record |
Http Client | Async http client service, easy to send/receive http request/response |
Name | Description |
---|---|
Skull-Perf Cases | Including some basic perf cases |
DNSTurbo | Smart DNS Client based on Skull. Trailer |
To discuss any issues, there are some ways we can use:
- Open an issue on Github directly
- Discuss at Reddit: https://www.reddit.com/r/skullengine/
- Send an email to [email protected]
- Go directly to the Mail Group, and post the questions.
To fix a bug or add a new feature, just Fork
the repo, then apply the fixes/features via a PR.