Pion Network Library (Boost licensed open source)

Overview

Pion Network Library

C++ framework for building lightweight HTTP interfaces

Build Status

Project Home: https://github.com/splunk/pion

Retrieving the code

git clone https://github.com/splunk/pion.git
cd pion

Building the code

For XCode: use pion.xcodeproj

For Visual Studio: use pion.sln

On Unix platforms (including Linux, OSX, etc.) you can run

./autogen.sh
./configure

to generate Makefiles using GNU autotools, followed by

make

to build everything except the unit tests.

You can build and run all the unit tests with

make check

Generate build using CMake

CMake is cross-platform build generator. Pion required cmake version 2.8.10+

To generate build call

cmake <path to pion clone> [-G <generator name>] [-D<option>...]

for example to generate MSVS2012 Win64 solution run

git clone [email protected]:splunk/pion.git
cd pion/build
cmake .. -G"Visual Studio 11 Win64"

this will create pion_solution.sln for MSVS2012/Win64

if cmake can't find dependency, use -D to control Find modules search behaviour

-DBOOST_ROOT=<path to installed boost libraries>
-DZLIB_ROOT=<path to installed zlib>
-DOPENSSL_ROOT_DIR=...
-DLOG4CPLUS_ROOT=...

Third Party Libraries

Pion requires the Boost C++ libraries version 1.35 or greater. Please see the README.boost file within the doc subdirectory for instructions on how to download, build and install Boost.

For logging, Pion may be configured to:

  • use std::cout and std::cerr for logging (the default configuration)

  • use one of the following open source libraries:

  • disable logging entirely (run configure --disable-logging)

Detailed build instructions are available for all of the platforms supported by Pion within the doc subdirectory (README.platform).

License

Copyright © 2007-2016 Splunk Inc.

The Pion Network Library is published under the Boost Software License. See COPYING for licensing information.

Issues
  • Code and Roadmap for PION

    Code and Roadmap for PION

    Hi, just wanted to ask few questions about this project, it's more about process activities and roadmap, it can be very helpful for me and others while evaluating PION as a component for any project.

    • From the code quality stand of point, are you running any static code analysis? I saw ReSharper in git ignore, but nothing more. Maybe you're planning to provide some scan logs or use of such services like https://scan.coverity.com.
    • Are you planning to provide more detailed documentation i.e. sample codes, tutorials etc.
    • If you have information about who is using this library, that would be also very helpful.
    opened by mbielanczuk 8
  • HTTP server enters busy-loop with gcc 4.7 in C++11 mode

    HTTP server enters busy-loop with gcc 4.7 in C++11 mode

    Compile with g++ -std=c++11:

    #include <iostream>
    
    #include <pion/process.hpp>
    #include <pion/http/server.hpp>
    
    int main(int argc, char *argv[]) {
        pion::process::initialize();
    
        try {
            boost::asio::ip::tcp::endpoint endpoint(boost::asio::ip::tcp::v4(), 5000);
            pion::http::server server(endpoint);
            server.start();
            pion::process::wait_for_shutdown();
        } catch (std::exception& e) {
            std::cerr << pion::diagnostic_information(e) << std::endl;
            return 1;
        }
    
        return 0;
    }
    
    opened by hasselmm 6
  • FindLog4cplus.cmake broken

    FindLog4cplus.cmake broken

    When changing the find-package of log4cplus to required (find_package(Log4cplus REQUIRED)), cmake on my machine fails to find it. I'm not quite sure why that is.

    Steps to reproduce (Ubuntu 16.04.1 Xenial LTS, 64 Bit):

    1. Set the find-package in CMakeLists.txt to REQUIRED.
    2. sudo apt-get install liblog4cplus-dev
    3. Try to build cmake with USE_LOG4CPLUS enabled

    CMake should fail to find the log4cplus library.

    I've written a FindLog4cplus.cmake module that works for me but lacks some configurability that your existing module provides. You can find it here.

    opened by Anticom 5
  • Adds cmake package configuration and version file to enable find_package(libpion)

    Adds cmake package configuration and version file to enable find_package(libpion)

    Hi dear splunk developers team,

    I was just about to use your library in my project and noticed that your cmake build didn't add package-config, but personally I wished to be able to find_package pion, so I simply added the necessary steps for this.

    This allows users of the library to include it easily then : find_package(libpion 5.0.6 REQUIRED) link_directories(${LIBPION_LIBRARY_DIRS}) include_directories(${LIBPION_INCLUDE_DIRS}) target_link_libraries(yourTarget ${LIBPION_LIBRARIES})

    It also has the advantages that if different version are on the system, only the right one is taken.

    Thanks for this http library :smiley: Cheers,

    opened by daminetreg 5
  • Replaced non-const reference arguments with value arguments for ptrs.

    Replaced non-const reference arguments with value arguments for ptrs.

    These functions were only making copies of these arguments. There wasn't any modification. This commit made these arguments value-types instead to be more flexible to calling code.

    opened by camio 5
  • Made 'include_directories' use correct boost include var.

    Made 'include_directories' use correct boost include var.

    The documentation of FindBoost (cmake --help-module FindBoost) indicates that 'Boost_INCLUDE_DIRS' points to the boost includes and not 'Boost_INCLUDE_DIR'.

    This bug could inadvertently cause pion to use system boost headers with another boost installation's libraries.

    opened by camio 5
  • Develop

    Develop

    In order to build pion with CMake and Visual Studio 2012 i stumbled on- and fixed some issues. I want to use pion with logging disabled to get rid of any dependency. Additionally, I added the option BUILD_SPDY basically to get rid of the dependency to zlib. I reached this by removing the source files containing the SPDY implementation - this would better be the other way round by explicitly/selectively adding the needed source files (as recommended by CMake).

    opened by simongysi-lawo 5
  • Fixes from multi-platform work

    Fixes from multi-platform work

    Hi, I've tested pion on Mint, Debian Testing & Stable, Fedora 20 & 17, and MingW64 on 32-bit and 64-bit Windows 7, and these are the fixes I made.

    I've also fixed all the warnings, and set -Werror so that they stay fixed.

    opened by jhol 4
  • Add support for boost versions without 'BOOST_NOEXCEPT'.

    Add support for boost versions without 'BOOST_NOEXCEPT'.

    BOOST_NOEXCEPT is not in boost 1.47.0 in particular, which pion still supports. Defining 'BOOST_SYSTEM_NOEXCEPT' to nothing in this case will cause no harm.

    opened by camio 4
  • Contributors agreement submission form seems broken

    Contributors agreement submission form seems broken

    I just tried to sign the CLA here: https://www.splunk.com/goto/contributions

    It keeps failing, telling me that "You need to correct some items before continuing"

    Each time, the 'State' field is reset. I choose NY, and try to re-submit, but it errors out again and resets the 'State' field.

    opened by acmorrow 3
  • Linux 64 build failure

    Linux 64 build failure

    There is an error while building library on Linux. The header file <include/pion/config.hpp> does not exists while <include/pion/config.hpp.win> or <include/pion/config.hpp.xcode> exists. Why <config.hpp> is not created during configuration step ?

    Building context :

    System uname: Linux-3.14.27-x86_64-Intel-R-_Core-TM-i7-2670QM_CPU@_2.20GHz-gentoo-14.16.2 sh bash 4.3_p33-r2 ld GNU ld (Gentoo 2.24 p1.4) 2.24 app-shells/bash: 4.3_p33-r2::gentoo dev-util/cmake: 3.2.2::gentoo dev-util/pkgconfig: 0.28-r2::gentoo sys-devel/autoconf: 2.13::gentoo, 2.69::gentoo sys-devel/automake: 1.11.6-r1::gentoo, 1.13.4::gentoo, 1.15::gentoo sys-devel/gcc: 4.8.4::gentoo sys-devel/gcc-config: 1.7.3::gentoo sys-devel/libtool: 2.4.6::gentoo sys-devel/make: 4.1-r1::gentoo sys-kernel/linux-headers: 3.18::gentoo (virtual/os-headers) sys-libs/glibc: 2.20-r2::gentoo

    Build info:

    • Running eautoreconf in '/var/calculate/tmp/portage/dev-cpp/pion-5.0.7/work/pion-5.0.7' ...
    • Running libtoolize --install --copy --force --automake ... [ ok ]
    • Running aclocal -I m4 -I build ... [ ok ]
    • Running autoconf --force ... [ ok ]
    • Running autoheader ... [ ok ]
    • Running automake --add-missing --copy --foreign --force-missing ... [ ok ]
    • Running elibtoolize in: pion-5.0.7/
    • Running elibtoolize in: pion-5.0.7/m4/
    • Applying portage/1.2.0 patch ...
    • Applying sed/1.5.6 patch ... shell-init: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory shell-init: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory job-working-directory: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory chdir: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
    •  myeconfargs =>  --enable-option-checking --disable-silent-rules --disable-dependency-tracking --disable-fast-install --without-gnu-ld --disable-libtool-lock --disable-doxygen-man --disable-doxygen-rtf --disable-doxygen-xml --disable-doxygen-html --disable-doxygen-pdf --with-boost --without-debug --disable-tests --with-zlib --without-bzlib --with-openssl --enable-logging --with-ostream-logging --without-log4cplus --without-log4cxx --without-log4cpp
      

      Working in BUILD_DIR: "/var/calculate/tmp/portage/dev-cpp/pion-5.0.7/work/pion-5.0.7" checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking for gawk... gawk checking whether make sets $(MAKE)... yes checking whether make supports nested variables... yes checking whether make supports nested variables... (cached) yes checking for style of include used by make... GNU checking for x86_64-pc-linux-gnu-gcc... x86_64-pc-linux-gnu-gcc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether x86_64-pc-linux-gnu-gcc accepts -g... yes checking for x86_64-pc-linux-gnu-gcc option to accept ISO C89... none needed checking whether x86_64-pc-linux-gnu-gcc understands -c and -o together... yes checking dependency style of x86_64-pc-linux-gnu-gcc... none checking build system type... x86_64-pc-linux-gnu checking host system type... x86_64-pc-linux-gnu checking how to print strings... printf checking for a sed that does not truncate output... /bin/sed checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for fgrep... /bin/grep -F checking for ld used by x86_64-pc-linux-gnu-gcc... /usr/x86_64-pc-linux-gnu/bin/ld checking if the linker (/usr/x86_64-pc-linux-gnu/bin/ld) is GNU ld... yes checking for BSD- or MS-compatible name lister (nm)... /usr/bin/x86_64-pc-linux-gnu-nm -B checking the name lister (/usr/bin/x86_64-pc-linux-gnu-nm -B) interface... BSD nm checking whether ln -s works... yes checking the maximum length of command line arguments... 1572864 checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format... func_convert_file_noop checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop checking for /usr/x86_64-pc-linux-gnu/bin/ld option to reload object files... -r checking for x86_64-pc-linux-gnu-objdump... objdump checking how to recognize dependent libraries... pass_all checking for x86_64-pc-linux-gnu-dlltool... dlltool checking how to associate runtime and link libraries... printf %s\n checking for x86_64-pc-linux-gnu-ar... x86_64-pc-linux-gnu-ar checking for archiver @FILE support... @ checking for x86_64-pc-linux-gnu-strip... x86_64-pc-linux-gnu-strip checking for x86_64-pc-linux-gnu-ranlib... x86_64-pc-linux-gnu-ranlib checking command to parse /usr/bin/x86_64-pc-linux-gnu-nm -B output from x86_64-pc-linux-gnu-gcc object... ok checking for sysroot... no checking for a working dd... /bin/dd checking how to truncate binary pipes... /bin/dd bs=4096 count=1 checking for x86_64-pc-linux-gnu-mt... no checking for mt... no checking if : is a manifest tool... no checking how to run the C preprocessor... x86_64-pc-linux-gnu-gcc -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking for dlfcn.h... yes checking for objdir... .libs checking if x86_64-pc-linux-gnu-gcc supports -fno-rtti -fno-exceptions... no checking for x86_64-pc-linux-gnu-gcc option to produce PIC... -fPIC -DPIC checking if x86_64-pc-linux-gnu-gcc PIC flag -fPIC -DPIC works... yes checking if x86_64-pc-linux-gnu-gcc static flag -static works... yes checking if x86_64-pc-linux-gnu-gcc supports -c -o file.o... yes checking if x86_64-pc-linux-gnu-gcc supports -c -o file.o... (cached) yes checking whether the x86_64-pc-linux-gnu-gcc linker (/usr/x86_64-pc-linux-gnu/bin/ld -m elf_x86_64) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking for shl_load... no checking for shl_load in -ldld... no checking for dlopen... no checking for dlopen in -ldl... yes checking whether a program can dlopen itself... yes checking whether a statically linked program can dlopen itself... no checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... no checking for x86_64-pc-linux-gnu-doxygen... no checking for doxygen... no configure: WARNING: doxygen not found - will not generate any doxygen documentation checking for x86_64-pc-linux-gnu-perl... no checking for perl... /usr/bin/perl checking for x86_64-pc-linux-gnu-g++... x86_64-pc-linux-gnu-g++ checking whether we are using the GNU C++ compiler... yes checking whether x86_64-pc-linux-gnu-g++ accepts -g... yes checking dependency style of x86_64-pc-linux-gnu-g++... none checking how to run the C++ preprocessor... x86_64-pc-linux-gnu-g++ -E checking for ld used by x86_64-pc-linux-gnu-g++... /usr/x86_64-pc-linux-gnu/bin/ld -m elf_x86_64 checking if the linker (/usr/x86_64-pc-linux-gnu/bin/ld -m elf_x86_64) is GNU ld... yes checking whether the x86_64-pc-linux-gnu-g++ linker (/usr/x86_64-pc-linux-gnu/bin/ld -m elf_x86_64) supports shared libraries... yes checking for x86_64-pc-linux-gnu-g++ option to produce PIC... -fPIC -DPIC checking if x86_64-pc-linux-gnu-g++ PIC flag -fPIC -DPIC works... yes checking if x86_64-pc-linux-gnu-g++ static flag -static works... yes checking if x86_64-pc-linux-gnu-g++ supports -c -o file.o... yes checking if x86_64-pc-linux-gnu-g++ supports -c -o file.o... (cached) yes checking whether the x86_64-pc-linux-gnu-g++ linker (/usr/x86_64-pc-linux-gnu/bin/ld -m elf_x86_64) supports shared libraries... yes checking dynamic linker characteristics... (cached) GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking for C++ compiler vendor... gnu checking for specific CPU architecture... no checking for debugging... no checking for plug-ins directory... /usr/share/pion/plugins checking for boostlib >= 1.35... yes checking boost library extension... -mt checking for boost::date_time library... ok checking for boost::system library... ok checking for boost::thread library... ok checking for boost::filesystem library... ok checking for boost::regex library... ok configure: Unit tests are disabled checking for cygwin directory... no checking for malloc_trim() support... yes checking unordered_map usability... no checking unordered_map presence... no checking for unordered_map... no checking tr1/unordered_map usability... yes checking tr1/unordered_map presence... yes checking for tr1/unordered_map... yes checking if unordered_map is ok... ok checking for gzip compression support (zlib)... yes checking zlib.h usability... yes checking zlib.h presence... yes checking for zlib.h... yes checking linking with zlib... ok checking for bzip2 compression support (bzlib)... no checking for SSL support (openssl)... yes checking openssl/ssl.h usability... yes checking openssl/ssl.h presence... yes checking for openssl/ssl.h... yes checking linking with openssl... ok configure: Building Pion with support for SSL (using OpenSSL) configure: Using std::ostream for logging checking that generated files are newer than configure... done configure: creating ./config.status config.status: creating pion.pc config.status: creating Makefile ...

    Build error:

    libtool: compile: x86_64-pc-linux-gnu-g++ -DHAVE_CONFIG_H -I. -I../include/pion -I../include -pthread -D_REENTRANT -I/usr/include -O2 -march=x86-64 -pipe -DPION -O2 -ggdb -Wall -Wno-strict-aliasing -DNDEBUG -c spdy_parser.cpp -fPIC -DPIC -o .libs/spdy_parser.o In file included from logger.cpp:10:0: ../include/pion/logger.hpp:238:25: error: variable ‘pion::PION_API pion::logger’ has initializer but >incomplete type struct PION_API logger { ^ ../include/pion/logger.hpp:238:25: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default] ../include/pion/logger.hpp:239:13: error: expected primary-expression before ‘enum’ enum log_priority_type { ^ ../include/pion/logger.hpp:239:13: error: expected ‘}’ before ‘enum’ ../include/pion/logger.hpp:239:13: error: expected ‘,’ or ‘;’ before ‘enum’ ../include/pion/logger.hpp:243:20: error: expected class-name before ‘(’ token ~logger() {} ^ ../include/pion/logger.hpp:244:24: error: ISO C++ forbids declaration of ‘logger’ with no type >[-fpermissive] logger(void) : m_name("pion") {} ^ ../include/pion/logger.hpp: In function ‘int pion::logger()’: ../include/pion/logger.hpp:244:28: error: only constructors take member initializers logger(void) : m_name("pion") {} ^ .

    opened by ruddy32 3
  • compiling and running with boost 1.70.0

    compiling and running with boost 1.70.0

    Hi,

    I can test it further and make a pull request. It was branched from develop; I'm not sure if everybody would be ready to jump to boost 1.70.0 dependency

    What should we do?

    opened by rimmartin 5
  • Fix memory leak on http binary send

    Fix memory leak on http binary send

    The internal http write buffer was allocating copies of data it never deleted.

    By the time the std::vector destructor was getting called, the vector size was already 0 and any data pointers were invalid.

    Extending std::vector here is questionable, but this should patch the memory leak with minimal impact on the existing code.

    opened by flatline 0
  • configure: error: Unable to link with the boost::unit_test_framework library

    configure: error: Unable to link with the boost::unit_test_framework library

    When i use ./autogen.sh and ./configure, get this error。 As i find this component has been installed in the Centos 7 x64. Is there any way to resolve this issue?

    Thanks, Baude

    opened by baudelee 3
  • Support boost 1.66

    Support boost 1.66

    Hello, I have problem with compile actual git version of pion on actual version Arch Linux with boost lib 1.66 :

    ... ../include/pion/tcp/connection.hpp:120:36: error: no matching function for call to ‘boost::asio::ssl::context::context(boost::asio::io_service&, boost::asio::ssl::context_base::method)’ m_lifecycle(LIFECYCLE_CLOSE) ^ In file included from /usr/include/boost/asio/ssl/context.hpp:757:0, from /usr/include/boost/asio/ssl.hpp:18, from ../include/pion/tcp/connection.hpp:18, from ../include/pion/http/auth.hpp:21, from http_auth.cpp:11: /usr/include/boost/asio/ssl/impl/context.ipp:326:1: note: candidate: boost::asio::ssl::context::context(boost::asio::ssl::context&&) context::context(context&& other) ^~~~~~~ /usr/include/boost/asio/ssl/impl/context.ipp:326:1: note: candidate expects 1 argument, 2 provided /usr/include/boost/asio/ssl/impl/context.ipp:63:1: note: candidate: boost::asio::ssl::context::context(boost::asio::ssl::context_base::method) context::context(context::method m) ^~~~~~~ /usr/include/boost/asio/ssl/impl/context.ipp:63:1: note: candidate expects 1 argument, 2 provided In file included from ../include/pion/http/auth.hpp:21:0, from http_auth.cpp:11: ../include/pion/tcp/connection.hpp: In constructor ‘pion::tcp::connection::connection(boost::asio::io_service&, pion::tcp::connection::ssl_context_type&)’: ../include/pion/tcp/connection.hpp:140:36: error: no matching function for call to ‘boost::asio::ssl::context::context(boost::asio::io_service&, boost::asio::ssl::context_base::method)’ m_lifecycle(LIFECYCLE_CLOSE) ^ In file included from /usr/include/boost/asio/ssl/context.hpp:757:0, from /usr/include/boost/asio/ssl.hpp:18, from ../include/pion/tcp/connection.hpp:18, from ../include/pion/http/auth.hpp:21, from http_auth.cpp:11: /usr/include/boost/asio/ssl/impl/context.ipp:326:1: note: candidate: boost::asio::ssl::context::context(boost::asio::ssl::context&&) context::context(context&& other) ^~~~~~~ /usr/include/boost/asio/ssl/impl/context.ipp:326:1: note: candidate expects 1 argument, 2 provided /usr/include/boost/asio/ssl/impl/context.ipp:63:1: note: candidate: boost::asio::ssl::context::context(boost::asio::ssl::context_base::method) context::context(context::method m) ^~~~~~~ /usr/include/boost/asio/ssl/impl/context.ipp:63:1: note: candidate expects 1 argument, 2 provided In file included from ../include/pion/http/auth.hpp:21:0, from http_auth.cpp:11: ../include/pion/tcp/connection.hpp: In constructor ‘pion::tcp::connection::connection(boost::asio::io_service&, pion::tcp::connection::ssl_context_type&, bool, pion::tcp::connection::connection_handler)’: ../include/pion/tcp/connection.hpp:702:44: error: no matching function for call to ‘boost::asio::ssl::context::context(boost::asio::io_service&, boost::asio::ssl::context_base::method)’ m_finished_handler(finished_handler) ^ In file included from /usr/include/boost/asio/ssl/context.hpp:757:0, from /usr/include/boost/asio/ssl.hpp:18, from ../include/pion/tcp/connection.hpp:18, from ../include/pion/http/auth.hpp:21, from http_auth.cpp:11: /usr/include/boost/asio/ssl/impl/context.ipp:326:1: note: candidate: boost::asio::ssl::context::context(boost::asio::ssl::context&&) context::context(context&& other) ^~~~~~~ /usr/include/boost/asio/ssl/impl/context.ipp:326:1: note: candidate expects 1 argument, 2 provided /usr/include/boost/asio/ssl/impl/context.ipp:63:1: note: candidate: boost::asio::ssl::context::context(boost::asio::ssl::context_base::method) context::context(context::method m) ^~~~~~~ /usr/include/boost/asio/ssl/impl/context.ipp:63:1: note: candidate expects 1 argument, 2 provided make[1]: *** [Makefile:512: http_auth.lo] Error 1 make[1]: Opouští se adresář „/tmp/yaourt-tmp-max/aur-pion-git/src/pion/src“ make: *** [Makefile:524: all-recursive] Error 1

    I'm not programmer, but it looks like problem with actual lib boost. Or I'm wrong? Thanks Max

    opened by maxdevaine 3
  • Compilation issue in pion/include/pion/tcp/connection.hpp

    Compilation issue in pion/include/pion/tcp/connection.hpp

    When pion is used with asio SSL then corresponding include (namely boost/asio/ssl.hpp) is done too early before PION_HAVE_SSL is defined (the later comes from pion/config.hpp). It looks like code in #ifdef PION_HAVE_SSL should go after #include <pion/config.hpp>.

    opened by volo-zyko 0
Owner
Splunk GitHub
Splunk GitHub
Embeddable Event-based Asynchronous Message/HTTP Server library for C/C++

libasyncd Embeddable Event-based Asynchronous Message/HTTP Server library for C/C++. What is libasyncd? Libasyncd is an embeddable event-driven asynch

Seungyoung 165 May 25, 2022
C library to create simple HTTP servers and Web Applications.

Onion http server library Travis status Coverity status Onion is a C library to create simple HTTP servers and Web Applications. master the developmen

David Moreno Montero 1.9k Aug 10, 2022
Support for multiple RPC protocols in a single library

AnyRPC A multiprotocol remote procedure call system for C++ Overview AnyRPC provides a common system to work with a number of different remote procedu

Steve Gieseking 56 Jul 26, 2022
A C++11 RESTful web server library

Served Overview Served is a C++ library for building high performance RESTful web servers. Served builds upon Boost.ASIO to provide a simple API for d

Meltwater 692 Jul 24, 2022
bittyhttp - A threaded HTTP library for building REST services in C.

bittyhttp - A threaded HTTP library for building REST services in C.

Colin Luoma 12 Nov 29, 2021
An Sqlite3 Elixir library

Exqlite An SQLite3 library with an Ecto adapter implementation. Caveats When using the Ecto adapter, all prepared statements are cached using an LRU c

Matthew Johnston 128 Aug 5, 2022
A Zig binding to the webview library. Make Zig applications with a nice HTML5 frontend a reality!

A Zig binding to the webview library. Make Zig applications with a nice HTML5 frontend a reality!

ZigLibs 35 Aug 1, 2022
Boost.GIL - Generic Image Library | Requires C++11 since Boost 1.68

Documentation GitHub Actions AppVeyor Azure Pipelines CircleCI Regression Codecov Boost.GIL Introduction Documentation Requirements Branches Community

Boost.org 146 Jul 11, 2022
Open 3D Engine (O3DE) is an Apache 2.0-licensed multi-platform AAA Open 3D Engine

Open 3D Engine (O3DE) is an Apache 2.0-licensed multi-platform 3D engine that enables developers and content creators to build AAA games, cinema-quality 3D worlds, and high-fidelity simulations without any fees or commercial obligations.

O3DE 5.2k Aug 10, 2022
MIT Licensed Open Source version of Torque 2D game engine from GarageGames

We've moved! All torque engines have moved to a new organization, Torque Game Engines. Torque2D can be found at https://github.com/TorqueGameEngines/T

GarageGames 1.7k Aug 8, 2022
MIT Licensed Open Source version of Torque 3D from GarageGames

Torque 3D MIT Licensed Open Source version of Torque 3D from GarageGames More Information Homepage Torque 3D wiki Community forum GarageGames forum Ga

GarageGames 3.3k Aug 4, 2022
Header-only C++11 library to encode/decode base64, base64url, base32, base32hex and hex (a.k.a. base16) as specified in RFC 4648, plus Crockford's base32. MIT licensed with consistent, flexible API.

cppcodec Header-only C++11 library to encode/decode base64, base64url, base32, base32hex and hex (a.k.a. base16) as specified in RFC 4648, plus Crockf

Topology 470 Jul 25, 2022
Header-only C++11 library to encode/decode base64, base64url, base32, base32hex and hex (a.k.a. base16) as specified in RFC 4648, plus Crockford's base32. MIT licensed with consistent, flexible API.

cppcodec Header-only C++11 library to encode/decode base64, base64url, base32, base32hex and hex (a.k.a. base16) as specified in RFC 4648, plus Crockf

Topology 470 Jul 25, 2022
A permissively licensed markdown single-header library for Dear ImGui.

Support development of imgui_markdown through GitHub Sponsors or Patreon imgui_markdown Markdown For Dear ImGui A permissively licensed markdown singl

Juliette Foucaut 796 Jul 28, 2022
A modern C++ network library for developing high performance network services in TCP/UDP/HTTP protocols.

evpp Introduction 中文说明 evpp is a modern C++ network library for developing high performance network services using TCP/UDP/HTTP protocols. evpp provid

Qihoo 360 3k Jul 28, 2022
Header-only C++14 library for getting network addresses associated with network interface without name lookups on Windows, macOS, Linux, and FreeBSD

NetIF Get addresses associated with network interfaces on a system without using name lookups. Header-only, requires C++14. Usage Add the header file

GMLC-TDC 9 Aug 2, 2022
International Business Machines 9 Jul 21, 2022
Netif - Header-only C++14 library for getting network addresses associated with network interface without name lookups on Windows, macOS, Linux, and FreeBSD

NetIF Get addresses associated with network interfaces on a system without using name lookups. Header-only, requires C++14. Usage Add the header file

GMLC-TDC 9 Aug 2, 2022
A small self-contained alternative to readline and libedit that supports UTF-8 and Windows and is BSD licensed.

Linenoise Next Generation A small, portable GNU readline replacement for Linux, Windows and MacOS which is capable of handling UTF-8 characters. Unlik

ArangoDB 335 Jun 28, 2022
A readline and libedit replacement that supports UTF-8, syntax highlighting, hints and Windows and is BSD licensed.

Read Evaluate Print Loop ++ A small, portable GNU readline replacement for Linux, Windows and MacOS which is capable of handling UTF-8 characters. Unl

Marcin Konarski 576 Aug 1, 2022
Cross-platform, sophisticated frontend for the libretro API. Licensed GPLv3.

RetroArch RetroArch is the reference frontend for the libretro API. Popular examples of implementations for this API includes video game system emulat

null 6.9k Aug 5, 2022
Cross-platform, sophisticated frontend for the libretro API. Licensed GPLv3.

RetroArch RetroArch is the reference frontend for the libretro API. Popular examples of implementations for this API includes video game system emulat

null 6.9k Aug 3, 2022
BSD-licensed Yamaha FM sound cores (OPM, OPN, OPL, and others)

ymfm ymfm is a collection of BSD-licensed Yamaha FM sound cores (OPM, OPN, OPL, and others), written by Aaron Giles Supported environments This code s

Aaron Giles 146 Aug 7, 2022
This repository contains commercially licensed wolfSSL products and example code for use on specified Renesas platforms.

wolfSSL Product for Renesas This repository contains commercially licensed wolfSSL product code for use on specified Renesas platforms. This code is o

wolfSSL 5 Jul 12, 2022
EnkiTS - A permissively licensed C and C++ Task Scheduler for creating parallel programs. Requires C++11 support.

Support development of enkiTS through Github Sponsors or Patreon enkiTS Master branch Dev branch enki Task Scheduler A permissively licensed C and C++

Doug Binks 1.3k Aug 6, 2022
This is a minimal state immediate mode graphical user interface toolkit written in ANSI C and licensed under public domain

This is a minimal state immediate mode graphical user interface toolkit written in ANSI C and licensed under public domain. It was designed as a simple embeddable user interface for application and does not have any dependencies, a default render backend or OS window and input handling but instead provides a very modular library approach by using simple input state for input and draw commands describing primitive shapes as output.

Micha Mettke 13.4k Aug 4, 2022
XMap is a fast network scanner designed for performing Internet-wide IPv6 & IPv4 network research scanning.

XMap is reimplemented and improved thoroughly from ZMap and is fully compatible with ZMap, armed with the "5 minutes" probing speed and novel scanning techniques. XMap is capable of scanning the 32-bits address space in under 45 minutes.

idealeer 175 Jul 17, 2022
Network utility tool which enables to prototype or test network things.

netsck netsck is a network utility tool which is developed to prototype or test network things. It provides a shell inside which runs javascript engin

Ozan Cansel 4 May 29, 2022
C++ peer to peer library, built on the top of boost

Breep What is Breep? Breep is a c++ bridged peer to peer library. What does that mean? It means that even though the network is constructed as a peer

Lucas Lazare 112 Jul 15, 2022