Framework for Enterprise Application Development in c++, HTTP1/HTTP2/HTTP3 compliant, Supports multiple server backends

Overview

The ffead-cpp Framework

ffead-cpp is a web-framework, application framework, utilities all bundled into one. It also provides an embedded HTTP/Web-Socket compliant high-performance server core. It is a collection of modules all geared towards performing individual roles which together form the cohesive back-bone of ffead-cpp.

It provides a very simple to use and maintain web-framework library with advanced features like Reflection, Dependency Injection (IOC), Inbuilt REST/SOAP support, Security/Authentication features. Moreover implementation for interfacing to caching tools like Memcached/Redis are provided in-built. Database integration/ORM framework (SDORM) solves all major issues with respect to interfacing with SQL/No-SQL database alike.

Multi-level serialization or template level serialization is a high point of ffead-cpp core serialization run-time. Any C++ POCO class can be marked as serializable and the run-time will take care of marshalling/un-marshalling the object to its intended serializable form and back(JSON/XML/BINARY).

ffead-cpp can be easily driven by XML configuration, Services/Controllers/Filters/Interfaces/API(s) are all simple POCO classes without any need for them to extend any classes. The differentiating feature in ffead-cpp is the usage/implementation/support for markers (Annotations in java). Simple #pragma directives can now be used to drive the entire configuration in ffead-cpp, so you can just forget XML configuration.

All in all ffead-cpp is the gap in the world of C++ web application or enterprise application development which I have tried to fill with my humble/honest effort.

Both cmake and autoconf builds are supported

Detailed OS specific instructions, instructions for installing the available server backends and docker/docker-compose scripts are located at docker

Build validated for the following Operating systems/Toolchains

Ubuntu CentOS OpenSUSE
Gentoo ArchLinux Alpine Linux
MacOS Windows Cygwin Windows mingw-w64
ArchLinux (mingw-w64 cross compiler) Ubuntu (musl cross compiler) Ubuntu (android cross compiler)
Solaris FreeBSD Emscripten

Latest Techempower benchmarks

Features

  • Multiple server backends (HTTP 1.1/HTTP 2/HTTP 3)
    embedded (HTTP1.1) nghttp2 (HTTP2) quiche (HTTP3) seastar
    apache cinatra (c++) lithium (c++) drogon (c++)
    libreactor (c) h2o (c) vweb (vlang) picov (vlang)
    actix (rust) hyper (rust) thruster (rust) rocket (rust)
    h2o.cr (crystal) crystal-http (crystal) fasthttp (golang) gnet (golang)
    firenio (java) rapidoid (java) wizzardo-http (java) hunt (d)
    swift-nio (swift) http.jl (julia) mongols (c) uv-cpp (c++)
    CppServer (c++) nginx openlitespeed (experimental)
  • Support for multiple I/O event notification engines,
    • io_uring - Linux kernel >= 5.6
    • epoll - Linux
    • kqueue - BSD/MacOS
    • event_ports/devpoll - Solaris
    • wepoll - Windows (IOCP based epoll library)
    • poll/select - On all platforms that support these API's
  • Embedded HTTP Server with single process and thread-pool backends
  • SSL/TLS support
  • Web Socket Support
  • Advanced ORM - SDORM (sql/monogo)
  • Raw SQL API for postgresql (libpq)
  • Cache API (memcached/redis)
  • Improved Thread/ThreadPool API(s)
  • Marker based configuration (java style annotations)
  • Reflection support
  • Serialization support
  • Date/Time Ultility functions
  • Dependency Injection
  • Serverside dynamic C++ Pages and template engine (HTML/C++ pages)
  • Sample app for Webrtc Signalling (websocket + api) (horizontally scalable peerjs compatible signalling server)
  • Embedded HTTP2.0 Server support (experimental)

Quickstart (Using cmake/make)

  • Install cmake >= 3.8.2 and prerequisites
  • mkdir build && cd build
  • cmake -DSRV_EMB=on -DMOD_SDORM_MONGO=on ..
  • make install -j4 (Build ffead-cpp along-with the sample applications in web + generate ffead-cpp binary)
  • Sip some coffee
  • cd ../ffead-cpp-5.0-bin/ (Navigate to the ffead-cpp binary folder)
  • chmod +x *.sh
  • ./server.sh (Startup ffead-cpp Njoy!!)

Quickstart (Using cmake/ninja)

  • Install cmake >= 3.8.2, ninja and prerequisites
  • mkdir build && cd build
  • cmake -GNinja -DSRV_EMB=on -DMOD_SDORM_MONGO=on ..
  • ninja install (Build ffead-cpp along-with the sample applications in web + generate ffead-cpp binary)
  • Sip some coffee
  • cd ../ffead-cpp-5.0-bin/ (Navigate to the ffead-cpp binary folder)
  • chmod +x *.sh
  • ./server.sh (Startup ffead-cpp Njoy!!)

Quickstart (Using autoconf)

  • Install autoconf, automake and libtool prerequisites
  • ./autogen.sh
  • ./configure --enable-srv_emb=yes --enable-mod_sdormmongo=yes
  • make install -j4 (Build ffead-cpp along-with the sample applications in web + generate ffead-cpp binary)
  • Sip some coffee
  • cd ffead-cpp-5.0-bin/ (Navigate to the ffead-cpp binary folder)
  • chmod +x *.sh
  • ./server.sh (Startup ffead-cpp Njoy!!)

Webrtc Example (Uses peerjs)

For further details checkout the wiki page

Issues
  • Server not starting (Segmentation fault (core dumped))

    Server not starting (Segmentation fault (core dumped))

    Setup: ubuntu 18.04 ffead-cpp from master branch Following the quick start steps got the following 1- sudo apt update -yqq && sudo apt install -yqq autoconf-archive gcc g++ cmake unzip libssl-dev uuid-dev odbc-postgresql unixodbc unixodbc-dev libcurl4-openssl-dev libmemcached-dev libmongoc-dev libhiredis-dev wget netcat -> success

    2- libcuckoo problem due to adding namespace libcuckoo in its header files corrected by adding namespace libcuckoo:: to declaration in ffead sources 4- make install -> success 5- ./server.sh waits for a while and then exists no server listening to 8080 attached are ffead.log and logs/job.log

    ffead.log jobs.log

    Appreciate your help

    opened by nexasone 6
  • Serialize compile bugs

    Serialize compile bugs

    ../modules/serialization/SerializeBase.h:117:6: error: unknown type name '_Rb_tree_color' ../modules/serialization/xml/XMLSerialize.h:100:14: error: no viable conversion from 'const value_type' (aka 'Element *const') to 'Element' Element entry = message.getChildElements().at(var);

    This is on FreeBSD 10. I should also mention that the configure script failed when checking for c++11 but my system does support it and uses -std=c++11 flag. I just set the requiring variable to false and the script succeeded, not sure if that is going to cause issues though.

    The _Rb_tree_color is only referenced once in the source and not defined anywhere that I could see.

    opened by art1351 5
  • Configure error

    Configure error

    After running autogen.sh successfully, running configure results in the following error:

    ./configure: line 23751: syntax error near unexpected token else' ./configure: line 23751:else'

    This is from a clone of the latest release. Version 1.9 configures/builds without error.

    opened by tradetree 4
  • autogen fails on 32bit cygwin

    autogen fails on 32bit cygwin

    [email protected] /cygdrive/c/dev32/ffead-cpp-master $ ./autogen.sh libtoolize: putting auxiliary files in .'. libtoolize: linking file./ltmain.sh' libtoolize: putting macros in AC_CONFIG_MACRO_DIR, m4'. libtoolize: linking filem4/libtool.m4' libtoolize: linking file m4/ltoptions.m4' libtoolize: linking filem4/ltsugar.m4' libtoolize: linking file m4/ltversion.m4' libtoolize: linking filem4/lt~obsolete.m4' libtoolize: Consider adding -I m4' to ACLOCAL_AMFLAGS in Makefile.am. libtoolize: putting auxiliary files in.'. libtoolize: copying file ./ltmain.sh' libtoolize: putting macros in AC_CONFIG_MACRO_DIR,m4'. libtoolize: copying file m4/libtool.m4' libtoolize: copying filem4/ltoptions.m4' libtoolize: copying file m4/ltsugar.m4' libtoolize: copying filem4/ltversion.m4' libtoolize: copying file m4/lt~obsolete.m4' libtoolize: Consider adding-I m4' to ACLOCAL_AMFLAGS in Makefile.am. configure.ac:5: require Automake 2.0, but have 1.11.6 autoreconf-2.69: automake failed with exit status: 1

    ...

    according to cygwin.com their automake supprt only goes up to 1.15

    opened by jwaterloo 3
  • Desperately need help on windows

    Desperately need help on windows

    I have for years been watching this project progress. I really would like to use it but can't build it on windows. I have tried all of your cygwin documentation unsuccessfully. I was esctatic recently with your mingw and autotools support. So I gave that a try too but couldn't get it to build. Though this rond I got much further than ties past. On Mingw I got everything to compile but ffead-cpp itself following are the errors. Could you please provide a step by step 64Bit windows tutorial either MingW or Cygwin but preferably MingW since it is lighter.

    $ make Making all in src/autotools make[1]: Entering directory /c/temporary/mingw_more/ffead-cpp-master/src/autoto ols' depbase=echo ../ServiceTask.lo | sed 's|[^/]_$|.deps/&|;s|.lo$||';\ /bin/sh ../../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I. -I../../include -I"../../include" -I/mingw/include -L/mingw/lib -D__USE_MINGW_ ANSI_STDIO=1 -O0 -I/mingw/include -L/mingw/lib -MT ../ServiceTask.lo -MD -MP -M F $depbase.Tpo -c -o ../ServiceTask.lo ../ServiceTask.cpp &&\ mv -f $depbase.Tpo $depbase.Plo libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../include -I../../include -I/mi ngw/include -L/mingw/lib -D__USE_MINGW_ANSI_STDIO=1 -O0 -I/mingw/include -L/ming w/lib -MT ../ServiceTask.lo -MD -MP -MF ../.deps/ServiceTask.Tpo -c ../ServiceTa sk.cpp -DDLL_EXPORT -DPIC -o ../.libs/ServiceTask.o ../ServiceTask.cpp:488:2: warning: this decimal constant is unsigned only in ISO C90 [enabled by default] int connKeepAlive = 10, techunkSiz = 8192, maxReqHdrCnt = 100, maxEntitySize = 2147483648; ^ In file included from c:\mingw\include\unistd.h:95:0, from ../../include/Date.h:27, from ../../include/DateFormat.h:26, from ../../include/ServiceTask.h:28, from ../ServiceTask.cpp:23: c:\mingw\include\parts\time.h:65:8: error: redefinition of 'struct timespec' struct timespec ^ In file included from ../../include/Date.h:26:0, from ../../include/DateFormat.h:26, from ../../include/ServiceTask.h:28, from ../ServiceTask.cpp:23: ../../include/mingw.h:73:8: error: previous definition of 'struct timespec' struct timespec { ^ ../../include/mingw.h:93:12: error: previous declaration of 'int nanosleep(const timespec_, timespec_)' with 'C++' linkage inline int nanosleep(const struct timespec *req, struct timespec *rem) { ^ In file included from ../../include/Date.h:27:0, from ../../include/DateFormat.h:26, from ../../include/ServiceTask.h:28, from ../ServiceTask.cpp:23: c:\mingw\include\unistd.h:105:59: error: conflicts with new declaration with 'C' linkage int nanosleep( const struct timespec *, struct timespec \* ); ^ In file included from ../../include/Date.h:26:0, from ../../include/DateFormat.h:26, from ../../include/ServiceTask.h:28, from ../ServiceTask.cpp:23: ../../include/mingw.h:102:14: error: previous declaration of 'unsigned int sleep (unsigned int)' with 'C++' linkage unsigned int sleep (unsigned int seconds); ^ In file included from ../../include/Date.h:27:0, from ../../include/DateFormat.h:26, from ../../include/ServiceTask.h:28, from ../ServiceTask.cpp:23: c:\mingw\include\unistd.h:138:49: error: conflicts with new declaration with 'C' linkage unsigned _cdecl __MINGW_NOTHROW sleep( unsigned ); ^ make[1]: *_\* [../ServiceTask.lo] Error 1 make[1]: Leaving directory/c/temporary/mingw_more/ffead-cpp-master/src/autotoo ls' make: *** [all-recursive] Error 1

    opened by jwaterloo 3
  • Building 2.0, running  ./autogen.sh fails:  MOD_APACHEMOD does not appear in AM_CONDITIONAL

    Building 2.0, running ./autogen.sh fails: MOD_APACHEMOD does not appear in AM_CONDITIONAL

    According to the steps: https://github.com/sumeetchhetri/ffead-cpp/wiki/Hello-World running ./ffead_gen.sh generate Hello Wold , after ./autogen.sh fails with the following error

    libtoolize: Consider adding '-I m4' to ACLOCAL_AMFLAGS in Makefile.am. libtoolize: putting auxiliary files in '.'. libtoolize: copying file './ltmain.sh' libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'. libtoolize: copying file 'm4/libtool.m4' libtoolize: copying file 'm4/ltoptions.m4' libtoolize: copying file 'm4/ltsugar.m4' libtoolize: copying file 'm4/ltversion.m4' libtoolize: copying file 'm4/lt~obsolete.m4' libtoolize: Consider adding '-I m4' to ACLOCAL_AMFLAGS in Makefile.am. configure.ac:11: installing './compile' configure.ac:5: installing './missing' Makefile.am:243: error: MOD_APACHEMOD does not appear in AM_CONDITIONAL Makefile.am:248: error: MOD_NGINXMOD does not appear in AM_CONDITIONAL configure.ac:903: error: required file 'src/apache_mod_ffeadcpp/autotools/Makefile.in' not found configure.ac:903: error: required file 'web/hello_world/src/autotools/Makefile.in' not found src/autotools/Makefile.am: installing './depcomp' autoreconf: automake failed with exit status: 1

    opened by lyp365859350 2
  • 2.0 and latest git fail with 'conditional

    2.0 and latest git fail with 'conditional "MOD_APACHEMOD" was never defined.'

    Using 2.0 or git, running ./configure after autogen.sh fails with the following error on Ubuntu 16.04.2 64 bit (up to date):

    [...]
    checking for dlopen in -ldl... (cached) yes
    checking for clock_nanosleep in -lrt... yes
    checking for clock_gettime in -lrt... yes
    checking that generated files are newer than configure... done
    configure: error: conditional "MOD_APACHEMOD" was never defined.
    Usually this means the macro was only invoked conditionally.
    

    Here is the output of gcc -v:

    Using built-in specs.
    COLLECT_GCC=gcc
    COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper
    Target: x86_64-linux-gnu
    Configured with: ../src/configure -v --with-pkgversion='Ubuntu 5.4.0-6ubuntu1~16.04.4' --with-bugurl=file:///usr/share/doc/gcc-5/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-5 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-5-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-5-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-5-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
    Thread model: posix
    gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4)
    

    And here is uname -a:

    Linux ubuntu 4.8.0-49-generic #52~16.04.1-Ubuntu SMP Thu Apr 20 10:55:59 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
    

    Let me know if you need more details.

    opened by Mister-X- 2
  • v2 libinter.so: cannot open shared object file

    v2 libinter.so: cannot open shared object file

    Hi,

    Got the latest release from github, followed the build setups i.e.

    Quickstart

    • ./autogen.sh (Setup configure for your platform)
    • ./configure (Setup makefiles)
    • Stretch a bit :-)
    • make all (Build ffead-cpp)
    • Sip some coffee
    • make build-apps (Build the sample applications in web + generate ffead-cpp binary)
    • cd ffead-cpp-2.0-bin/ (Navigate to the ffead-cpp binary folder)
    • ./server.sh (Startup ffead-cpp Njoy!!)

    but when the sever won't start up and the logs show the following errors:

    05/11/2015 16:10:41 :libinter.so05/11/2015 16:10:41 : 05/11/2015 16:10:41 :libinter.so: cannot open shared object file: No such file or directory05/11/2015 16:10:41 : 05/11/2015 16:10:41 :Could not load Library 05/11/2015 16:10:41 :Set up configure for intermediate libraries

    05/11/2015 16:10:41 : 05/11/2015 16:10:41 :Set up configure for intermediate libraries

    05/11/2015 16:10:41 : 05/11/2015 16:10:41 :Set up makefiles for intermediate libraries

    05/11/2015 16:10:41 : 05/11/2015 16:10:41 :/home/adrianph/development/ffead-cpp/ffead-cpp-2.0-bin//resources/rundyn-configure.sh: 32: /home/adrianph/development/ffead-cpp/ffead-cpp-2.0-bin//resources/rundyn-configure.sh: ./configure: not found 05/11/2015 16:10:41 : 05/11/2015 16:10:41 :Rerunning Intermediate code generation task

    05/11/2015 16:10:41 : 05/11/2015 16:10:41 :make: *** No rule to make target 'clean'. Stop. make: *** No rule to make target 'all'. Stop. cp: cannot stat ‘.libs/inter’: No such file or directory 05/11/2015 16:10:41 : 05/11/2015 16:10:41 :libinter.so: cannot open shared object file: No such file or directory05/11/2015 16:10:41 : 05/11/2015 16:10:41 :Could not load Library

    running ubuntu 15.10 any help is much appreciated.

    Thanks

    opened by gitdao 2
  • Bump github.com/valyala/fasthttp from 1.14.0 to 1.34.0 in /lang-server-backends/go/fasthttp

    Bump github.com/valyala/fasthttp from 1.14.0 to 1.34.0 in /lang-server-backends/go/fasthttp

    Bumps github.com/valyala/fasthttp from 1.14.0 to 1.34.0.

    Release notes

    Sourced from github.com/valyala/fasthttp's releases.

    v1.34.0

    • 59f94a3 Update github.com/klauspost/compress (#1237) (Mikhail Faraponov)
    • 62c15a5 Don't reset RequestCtx.s (#1234) (Erik Dubbelboer)
    • 7670c6e Fix windows tests (#1235) (Erik Dubbelboer)
    • f54ffa1 feature: Keep the memory usage of the service at a stable level (#1216) (Rennbon)
    • 15262ec Warn about unsafe ServeFile usage (#1228) (Erik Dubbelboer)
    • 1116d03 Fix panic while reading invalid trailers (Erik Dubbelboer)
    • 856ca8e Update dependencies (#1230) (Mikhail Faraponov)
    • 6b5bc7b Add windows support to normalizePath (Erik Dubbelboer)
    • f0b0cfe Don't log ErrBadTrailer by default (Erik Dubbelboer)
    • 6937fee fix: (useless check), skip Response body if http method HEAD (#1224) (Pavel Burak)
    • b85d2a2 Fix http proxy behavior (#1221) (Aoang)
    • ad8a07a RequestHeader support set no default ContentType (#1218) (Jack.Ju)
    • c94581c support configure HostClient (#1214) (lin longhjui)
    • 632e222 Client examples (#1208) (Sergey Ponomarev)
    • 6a3cc23 uri_test.go use example.com for clearness (#1212) (Sergey Ponomarev)
    • 9d665e0 Update dependencies (#1204) (Mikhail Faraponov)
    • 8d7953e Fix scheme check for not yet parsed requests (#1203) (ArminBTVS)

    v1.33.0

    • 61aa8b1 remove redundant code (#1202) (tyltr)
    • 4369776 fix(hijack): reuse RequestCtx (#1201) (Sergio VS)
    • 2aca3e8 fix(hijack): reset userValues after hijack handler execution (#1199) (Sergio VS)
    • 9123060 Updated dependencies (#1194) (Mikhail Faraponov)

    v1.32.0

    • 7eeb00e Make tests less flaky (#1189) (Erik Dubbelboer)
    • d19b872 Update tcpdialer.go (#1188) (Mikhail Faraponov)
    • c727b99 Release UseHostHeader in ReleaseRequest() (#1185) (Tolyar)
    • 6c0518b Fix UseHostHeader for DoTimeout + tests (#1184) (Tolyar)
    • 6b55811 Add MaxIdleWorkerDuration to Server. (#1183) (Kilos Liu)
    • 4517204 Allow to set Host header for Client (#1169) (Tolyar)
    • 258a4c1 fix: reset response after reset user values on keep-alive connections (#1176) (Sergio VS)
    • e9db537 Use %w to wrap errors (#1175) (Erik Dubbelboer)
    • 7db0597 Fix bad request trailer panic (Erik Dubbelboer)
    • 4aadf9a Fix parseTrailer panic (Erik Dubbelboer)
    • da7ff7a Add trailer support (#1165) (ichx)
    • 017f0aa fix: reset request after reset user values on keep-alive connections (#1162) (Sergio VS)
    • 3b117f8 feat: close idle connections when server shutdown (#1155) (ichx)
    • a94a2c3 Remove redundant code (#1154) (ichx)
    • f7c354c Fix race condition in Client.mCleaner (Erik Dubbelboer)
    • c078a9d Add string and bytes buffer convert trick in README (#1151) (ichx)
    • 3ff6aaa uri: isHttps() and isHttp() (#1150) (Sergey Ponomarev)
    • 8febad0 http.go: Request.SetURI() (Fix #1141) (#1148) (Sergey Ponomarev)
    • 2ca01c7 fix: Status Line parsing and writing (#1135) (Shivansh Vij)
    • 931d0a4 Fix lint (Erik Dubbelboer)
    • d613502 use sync.map is better (#1145) (halst)
    • c15e642 Don't run all race tests on windows (#1143) (Erik Dubbelboer)
    • 6006c87 chore (#1137) (tyltr)
    • 6d4db9b Fix race condition in getTCPAddrs (Erik Dubbelboer)

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • Dependencies not listed

    Dependencies not listed

    For example, ffead-cpp cannot build without libcuckoo. But it's never mentioned in the README, or elsewhere.

    All the required dependencies should be listed in the README.

    opened by mouse07410 1
  • Wishlist

    Wishlist

    I am "desperately need help on windows". Once I can get it working, ffead-cpp may be the best free non commercial open source web framework for C++.

    Some of many things I like reading about thus far:

    1. Coming from the Java world the Spring like XML, reflection based, IOC, inversion of control. Configuration based on structured objects is way better than flattened name value pairs.
    2. Coming from the Java world, log4j styled logging
    3. C++ Interpreter for when certain business rules needs to be runtime configurable, either from database of configuration file.
    4. runtime reflection is also nice though more documentation is needed on building the metadata

    WARNING: Be careful imitating too much from other language libraries and frameworks. Many times the design is bad and has already been replaced by something better.

    For instance, Template file and Dynamic C++ Page imitates the strength of ASP not ASP.NET, JSP not JSF and PHP not Yii. However, it also inherits the weakess of working on something that is neither C++ or HTML.

    What's still needed

    1. Auto compile, load, swap C++ code: The beauty of "Dynamic C++ Page" is you change, save and refresh page. Short test cycles improves developers productivity. Problem is if the language is not your native language than it sucks. Since Controller follows a well defined interface we need to be able to save it. It automatically recompiles as a dll/so and dynamically gets swapped out. This one interface is nice but possibly with future stateless interfaces; dependency injected of course. Now that C+ has raw strings so that w can have HTML or XML inside of our C++ code, this would be awesome.
    2. Graphic Designers are better at creating HTML pages than programmers. As such it is better if the textual portion of the view in a MVC framework was actually pure html. I know it never made a splash in the Java world, poor advertising, but Java RSF still can't be touched
    3. Flash scope memory, short lived session, for transferring data immediately between requests
    4. At some point data binding, conversion is needed to convert, request data into programmer data. in PHP and JQuery a request parameter named, "abc.def[3].ght" with a value of 5 would automatically be turned into 2 objects, one array and 1 member initialization. Maybe with your reflection and some configuration there could be something that flatten an typed object tree into map of string of strings or deflatten the opposite. A cross between compile time and runtime reflection could even make this typesafe for speed and refactoring.

    A frameworks worst enemy is growing into a monlith so of course all of these are better served as separate libraries that could be used in any scenario.

    opened by jwaterloo 1
  • Bump regex from 1.5.4 to 1.5.6 in /lang-server-backends/rust/actix-ffead-cpp

    Bump regex from 1.5.4 to 1.5.6 in /lang-server-backends/rust/actix-ffead-cpp

    Bumps regex from 1.5.4 to 1.5.6.

    Changelog

    Sourced from regex's changelog.

    1.5.6 (2022-05-20)

    This release includes a few bug fixes, including a bug that produced incorrect matches when a non-greedy ? operator was used.

    1.5.5 (2022-03-08)

    This releases fixes a security bug in the regex compiler. This bug permits a vector for a denial-of-service attack in cases where the regex being compiled is untrusted. There are no known problems where the regex is itself trusted, including in cases of untrusted haystacks.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies rust 
    opened by dependabot[bot] 0
  • Bump regex from 1.5.4 to 1.5.6 in /lang-server-backends/rust/hyper-ffead-cpp

    Bump regex from 1.5.4 to 1.5.6 in /lang-server-backends/rust/hyper-ffead-cpp

    Bumps regex from 1.5.4 to 1.5.6.

    Changelog

    Sourced from regex's changelog.

    1.5.6 (2022-05-20)

    This release includes a few bug fixes, including a bug that produced incorrect matches when a non-greedy ? operator was used.

    1.5.5 (2022-03-08)

    This releases fixes a security bug in the regex compiler. This bug permits a vector for a denial-of-service attack in cases where the regex being compiled is untrusted. There are no known problems where the regex is itself trusted, including in cases of untrusted haystacks.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies rust 
    opened by dependabot[bot] 0
  • Conan package

    Conan package

    Hello, Do you know about Conan? Conan is modern dependency manager for C++. And will be great if your library will be available via package manager for other developers.

    Here you can find example, how you can create package for the library.

    If you have any questions, just ask :-)

    opened by zamazan4ik 0
Releases(v5.3)
Owner
Sumeet Chhetri
Sumeet Chhetri
Kigs framework is a C++ modular multipurpose cross platform framework.

Kigs framework is a C++ modular multi-purpose cross-platform framework. It was used as a basis for many professionnal projects. The main goal was to b

null 70 Jul 20, 2022
Basic Development Environment - a set of foundational C++ libraries used at Bloomberg.

BDE Libraries This repository contains the BDE libraries, currently BSL (Basic Standard Library), BDL (Basic Development Library), BAL (Basic Applicat

Bloomberg 1.4k Aug 11, 2022
An eventing framework for building high performance and high scalability systems in C.

NOTE: THIS PROJECT HAS BEEN DEPRECATED AND IS NO LONGER ACTIVELY MAINTAINED As of 2019-03-08, this project will no longer be maintained and will be ar

Facebook Archive 1.7k Aug 8, 2022
🔥 bhook(aka ByteHook) is a PLT hook framework for Android app.

?? bhook(aka ByteHook) is a PLT hook framework for Android app. Most of ByteDance's Android apps use bhook as the PLT hook solution online.

Bytedance Inc. 1.2k Aug 3, 2022
Idle is an asynchronous and hot-reloadable C++ dynamic component framework

Idle is an asynchronous, hot-reloadable, and highly reactive dynamic component framework similar to OSGI that is: ?? Modular: Your program logic is en

Denis Blank 165 Jul 28, 2022
PYNQ Framework for ANTSDR

PYNQ Framework for ANTSDR This project was inspired by PYNQ and PlutoSDR. There are already many SDR platforms based on ZYNQ and AD9361, so does ANTSD

null 20 Jun 29, 2022
PlenOctree Volume Rendering (supports CUDA & fragment shader backends)

PlenOctree Volume Rendering This is a real-time PlenOctree volume renderer written in C++ using OpenGL, constituting part of the code release for: Ple

Alex Yu 463 Aug 2, 2022
Built a peer-to-peer group based file sharing system where users could share or download files from the groups they belonged to. Supports parallel downloading with multiple file chunks from multiple peers.

Mini-Torrent Built a peer-to-peer group based file sharing system where users could share or download files from the groups they belonged to. Supports

null 1 Nov 15, 2021
OceanBase is an enterprise distributed relational database with high availability, high performance, horizontal scalability, and compatibility with SQL standards.

What is OceanBase database OceanBase Database is a native distributed relational database. It is developed entirely by Alibaba and Ant Group. OceanBas

OceanBase 4.5k Aug 9, 2022
U++ is a C++ cross-platform rapid application development framework focused on programmer's productivity. It includes a set of libraries (GUI, SQL, Network etc.), and integrated development environment (TheIDE).

Ultimate++ Ultimate++ is a C++ cross-platform rapid application development framework focused on programmers productivity. It includes a set of librar

Ultimate++ 466 Aug 8, 2022
Bsl - Rust 2018 and C++20, "constexpr everything", AUTOSAR compliant header-only library intended to support the development of critical systems applications

Description The Bareflank Support Library (BSL) is a Rust 2018 and C++20, "constexpr everything", AUTOSAR compliant header-only library intended to su

Bareflank 65 Jul 28, 2022
IDA Debugger Module to Dynamically Synchronize Memory and Registers with third-party Backends (Tenet, Unicorn, GDB, etc.)

IDA Debug Bridge IDA Debugger Module to Dynamically Synchronize Memory and Registers with third-party Backends (Tenet, Unicorn, GDB, etc.) By synchron

null 8 Jul 13, 2022
A cross platform connection manager for V2Ray and other backends.

Qv2ray - For developers. By developers. Qv2ray is a cross-platform connection manager for V2Ray and other backends. This is the original Qv2ray projec

Shadowsocks.NET 606 Aug 1, 2022
Simple, secure & standards compliant web server for the most demanding of applications

Simple, secure[1] & standards compliant[2] web server for the most demanding[3] of applications. Read more... ?? Optimized security Being meticulously

uNetworking AB 14.1k Aug 8, 2022
A hierarchical parameter server framework based on MXNet. GeoMX also implements multiple communication-efficient strategies.

Introduction GeoMX is a MXNet-based two-layer parameter server framework, aiming at integrating data knowledge that owned by multiple independent part

null 86 Jul 22, 2022
A hierarchical parameter server framework based on MXNet. GeoMX also implements multiple communication-efficient strategies.

Introduction GeoMX is a MXNet-based two-layer parameter server framework, aiming at integrating data knowledge that owned by multiple independent part

null 86 Jul 22, 2022
Allows for multiple SwitchBot buttons and curtains to be controlled via MQTT sent to ESP32. ESP32 will send BLE commands to switchbots and return MQTT responses to the broker. Also supports Meter/Temp Sensor

SwitchBot-MQTT-BLE-ESP32 Switchbot local control using ESP32. no switchbot hub used/required. works with any smarthub that supports MQTT https://githu

null 278 Aug 10, 2022
Improved and configurable drop-in replacement to std::function that supports move only types, multiple overloads and more

fu2::function an improved drop-in replacement to std::function Provides improved implementations of std::function: copyable fu2::function move-only fu

Denis Blank 397 Aug 3, 2022
C++ application development framework, to help developers create and deploy applications quickly and simply

ULib - C++ library Travis CI: Coverity Scan: ULib is a highly optimized class framework for writing C++ applications. I wrote this framework as my too

stefano casazza 950 Jul 27, 2022
Neutralinojs is a lightweight and portable desktop application development framework

Neutralinojs is a lightweight and portable desktop application development framework. It lets you develop lightweight cross-platform desktop applications using JavaScript, HTML and CSS.

Neutralinojs 5.9k Aug 4, 2022
LAppS - Lua Application Server for micro-services with default communication over WebSockets. The fastest and most vertically scalable WebSockets server implementation ever. Low latency C++ <-> Lua stack roundtrip.

LAppS - Lua Application Server This is an attempt to provide very easy to use Lua Application Server working over WebSockets protocol (RFC 6455). LApp

null 47 Apr 25, 2022
Simple application log library. supporting multiple log levels, custom output & flash memory support.

ArduinoLog - C++ Log library for Arduino devices An minimalistic Logging framework for Arduino-compatible embedded systems. ArduinoLog is a minimalist

Thijs Elenbaas 126 Jul 30, 2022
High performance server-side application framework

Seastar Introduction SeaStar is an event-driven framework allowing you to write non-blocking, asynchronous code in a relatively straightforward manner

ScyllaDB 6.8k Aug 10, 2022
Tiny ISO-compliant C++ EXIF and XMP parsing library for JPEG.

TinyEXIF: Tiny ISO-compliant C++ EXIF and XMP parsing library for JPEG Introduction TinyEXIF is a tiny, lightweight C++ library for parsing the metada

cDc 78 Jul 31, 2022
:hocho: Strictly RFC 3986 compliant URI parsing and handling library written in C89; moved from SourceForge to GitHub

uriparser uriparser is a strictly RFC 3986 compliant URI parsing and handling library written in C89 ("ANSI C"). uriparser is cross-platform, fast, su

uriparser 247 Jul 24, 2022
Standards compliant, fast, secure markdown processing library in C

Hoedown Hoedown is a revived fork of Sundown, the Markdown parser based on the original code of the Upskirt library by Natacha Porté. Features Fully s

Hoedown 919 Aug 8, 2022
minimal POSIX compliant sleep

Minimal POSIX compliant sleep. Results Only 3 syscalls per execution $ strace ./sleep 1 execve("./sleep", ["./sleep", "1"], 0x7ffc998d09a8 /* 40 vars

null 33 Jul 10, 2022