{"id":13500962,"url":"https://github.com/kernelsauce/turbo","last_synced_at":"2025-04-13T05:04:44.813Z","repository":{"id":2282599,"uuid":"3239899","full_name":"kernelsauce/turbo","owner":"kernelsauce","description":"Turbo is a framework built for LuaJIT 2 to simplify the task of building fast and scalable network applications. It uses a event-driven, non-blocking, no thread design to deliver excellent performance and minimal footprint to high-load applications while also providing excellent support for embedded uses. ","archived":false,"fork":false,"pushed_at":"2023-10-04T01:48:17.000Z","size":4736,"stargazers_count":541,"open_issues_count":39,"forks_count":85,"subscribers_count":40,"default_branch":"master","last_synced_at":"2025-04-13T05:04:34.567Z","etag":null,"topics":["api-server","http","lua","luajit","network"],"latest_commit_sha":null,"homepage":"http://turbo.readthedocs.io/","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kernelsauce.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2012-01-22T14:15:17.000Z","updated_at":"2025-04-10T05:57:45.000Z","dependencies_parsed_at":"2024-01-15T13:34:20.095Z","dependency_job_id":null,"html_url":"https://github.com/kernelsauce/turbo","commit_stats":{"total_commits":1243,"total_committers":49,"mean_commits":"25.367346938775512","dds":0.2075623491552695,"last_synced_commit":"7fe88c2b99ff9bd6d6df3ee3c4077ea8a7d1e6a3"},"previous_names":[],"tags_count":34,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kernelsauce%2Fturbo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kernelsauce%2Fturbo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kernelsauce%2Fturbo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kernelsauce%2Fturbo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kernelsauce","download_url":"https://codeload.github.com/kernelsauce/turbo/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248665748,"owners_count":21142123,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api-server","http","lua","luajit","network"],"created_at":"2024-07-31T22:01:20.782Z","updated_at":"2025-04-13T05:04:44.769Z","avatar_url":"https://github.com/kernelsauce.png","language":"Lua","funding_links":[],"categories":["Lua","Resources"],"sub_categories":["Network"],"readme":".. image:: https://raw.github.com/kernelsauce/turbo/master/doc/design/turbo.png\n   :target: https://turbo.readthedocs.io\n\nTurbo is a framework built for LuaJIT 2 to simplify the task of building fast and scalable network applications. It uses a event-driven, non-blocking, no thread design to deliver excellent performance and minimal footprint to high-load applications while also providing excellent support for embedded uses. The toolkit can be used for HTTP REST API's, traditional dynamic web pages through templating, open connections like WebSockets, or just as high level building blocks for native speed network applications.\n\nFirst and foremost the framework is aimed at the HTTP(S) protocol. This means web developers and HTTP API developers are the first class citizens. But the framework contains generic nuts and bolts such as; a I/O loop, IO Stream classes, customizeable TCP (with SSL) server classes giving it value for everyone doing any kind of high performance network application. It will also speak directly to your exising C libraries, and happily also create native C struct's for the ultimate memory and CPU performance.\n\nKeep in mind that running this with LuaJIT provides you with roughly the speed of compiled C code with only a fraction of the development time. Perfect for small devices running cheap CPU's on battery power as well as your pay per use Amazon cluster.\n\nLuaJIT 2 is REQUIRED, PUC-RIO Lua is unsupported.\n\nAPI Documentation is available at https://turbo.readthedocs.io, or it can be built from source with ``make html`` from /doc in the source tree.\n\nIt's main features and design principles are:\n\n- Simple and intuitive API (much like Tornado).\n\n- Low-level operations is possible if the users wishes that.\n\n- Implemented in straight Lua and LuaJIT FFI on Linux, so the user can study and modify inner workings without too much effort. The Windows implementation uses some Lua modules to make compability possible.\n\n- Good documentation\n\n- Event driven, asynchronous and threadless design\n\n- Small footprint\n\n- SSL support (requires OpenSSL or LuaSec module for Windows)\n\n.. image:: https://api.travis-ci.org/kernelsauce/turbo.png\n   :target: http://travis-ci.org/kernelsauce/turbo\n\nSupported Architectures\n-----------------------\nx86, x64, ARM, PPC, MIPSEL\n\nSupported Operating Systems\n---------------------------\nLinux distros (x86, x64), OSX (Intel-based) and Windows x64. Possibly others using LuaSocket, but not tested or supported.\n\nInstallation\n------------\n\nYou can use LuaRocks to install Turbo on Linux.\n\n``luarocks install turbo``\n\nIf installation fails make sure that you have these required pacakages:\n\n``apt-get install luajit luarocks git build-essential libssl-dev``\n\nFor Windows run the included install.bat file.\nThis will install all dependencies: Visual Studio, git, mingw, gnuwin, openssl using Chocolatey. LuaJIT, the LuaRocks package manager and Turbo will be installed at C:\\\\turbo.lua. It will also install LuaSocket and LuaFileSystem with LuaRocks. The Windows environment will be ready to use upon success.\n\nTry: ``luajit C:\\turbo.lua\\src\\turbo\\examples\\helloworld.lua``\n\nIf any of the .dll or. so's are placed at non-default location then use environment variables to point to the correct place:\n\nE.g:\n``SET TURBO_LIBTFFI=C:\\turbo.lua\\src\\turbo\\libtffi_wrap.dll`` and\n``SET TURBO_LIBSSL=C:\\Program Files\\OpenSSL\\libeay32.dll``\n\nApplies for Linux based OS and OSX only:\n\nTurbo.lua can also be installed by the included Makefile. Simply download and run ``make install`` (requires root priv). It is installed in the default Lua 5.1 and LuaJIT 2.0 module directory.\n\nYou can specify your own prefix by using ``make install PREFIX=\u003cprefix\u003e``, and you can specify LuaJIT version with a ``LUAJIT_VERSION=2.0.0`` style parameter.\n\nTo compile without support for OpenSSL (and SSL connections) use the make option SSL=none.\nTo compile with axTLS support instead of OpenSSL use the make option SSL=axTLS. If you\nwant to install the framework in a bytecode form use: ``make bcodeinstall``\n\nIn essence the toolkit can run from anywere, but is must be able to load the libtffi_wrap.so at run time.\nTo verify a installation you can try running the applications in the examples folder.\n\nPackaging\n---------\nThe included Makefile supports packaging the current tree as a versioned tar.gz file.\nThis file will include only the neccessary bits and pieces for Turbo to run. The files\nwill be built as bytecode (luajit -b -g) with debug info. This reduces size drastically.\nSuitable for embedded devices with limited storage... It also reduces the startup time.\n\nUse ``make package``.\n\nthis results in a turbo.x.x.x.tar.gz file and a package/ directory being created.\n\nDependencies\n------------\nAll of the modules of Turbo.lua are made with the class implementation that Middleclass provides.\nhttps://github.com/kikito/middleclass.\n\nThe HTTP parser by Ryan Dahl is used for HTTP parsing. This is built and installed as part of the package.\n\nOpenSSL is required for SSL support. It is possible to run without this feature, and thus not need an SSL library.\n\nLicense\n-------\nCopyright 2011 - 2016 John Abrahamsen\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\nMany of the modules in the software package are derivatives of the\nTornado web server. Tornado is also licensed under Apache 2.0 license.\nFor more details on Tornado please see:\n\nhttp://www.tornadoweb.org/\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkernelsauce%2Fturbo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkernelsauce%2Fturbo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkernelsauce%2Fturbo/lists"}