Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Lightweight and fast HTTP/1.1, HTTP/1.2 (XML) Protocol with HTTP/2 flavour

License

NotificationsYou must be signed in to change notification settings

WEBcodeX1/http-1.2

Lightning-Fast, Next-Level Python / Java Application Server with HTTP/1.2 Protocol

CodeQLLicenseDocs OxygenDocs Sphinx

📌 Overview

HTTP/1.2 is a revolutionary approach to web protocols, designed as a simpler, more secure,and significantly faster alternative to HTTP/2 and probably HTTP/3.

We are buildingHTTP/1.2 - a much more lightweight solution.

  • Kernel Mutex-Less: Built with on-chip atomic user space locks
  • Lightning-Fast Performance: Optimized for modern hardware with epoll-based architecture
  • Threaded Static File Delivery: Threading and in-kernel sendfile() increase scheduling latency
  • Rock-Solid App-Server Security: Runs with tight backend process-separation model (non-threaded)
  • SPA Realtime Demands: Built for modern browser applications (SPAs) real-time demands
  • Zero Bloat: Eliminates unnecessary complexity while maintaining compatibility
  • Python-Powered: FalconAS application server with embedded Python scripting
  • Java-Powered: FalconAS application server with embedded Java scripting

📑 Table of Contents

  1. Quick Start
  2. Features
  3. Why HTTP/1.2?
  4. Build & Installation
  5. Testing
  6. Technical Architecture
  7. Documentation
  8. Community & Support
  9. Contributing
  10. Future Milestones
  11. License

🐎 Quick Start

Get HTTP/1.2 FalconAS running in minutes:

# clone repositorygit clone https://github.com/WEBcodeX1/http-1.2.gitcd http-1.2# install dependencies (Ubuntu 22.04/Debian 12)apt-get install git cmake python3-pip libboost-all-dev python3-dev nlohmann-json3-dev# build and installcmake.makesudo make install# start using systemd (automatically configured during install)sudo systemctl daemon-reloadsudo systemctlenable falcon-assudo systemctl start falcon-as# OR start manually. ./scripts/ulimit.sh. ./scripts/set-transparent-hugepages.sh/usr/local/bin/falcon-as

The server will be available with test applications at:

  • http://testapp1.local/
  • http://testapp2.local/

For detailed installation instructions, seeBUILD.md.


🌟 Features

Core Advantages

  • 🚀 Lightning-Fast: Epoll-based architecture for maximum performance
  • 🔒 Secure by Design: Interpreters run non-threaded / unix process isolated
  • ⚡ Zero Bloat: Eliminates HTTP/2's excessive complexity
  • 🎯 SPA-Optimized: Perfect for modern Single Page Applications real time demands
  • 🐍 Python-Powered: Embedded Python interpreter / scripting integration
  • ☕ Java-Powered: Embedded Java JNI / scripting integration

Protocol Innovations

  • Fixed HTTP/1.1 Pipelining: Resolves misordered request/reply pairs with UUID headers
  • Permanent Keep-Alive: Single socket per client for optimal TCP/IP utilization
  • Request UUID System: Eliminates response ordering requirements
  • Simplified Architecture: Text-based protocol maintaining HTTP/1.1 simplicity

Technical Features

  • Static Content Server: High-performance file serving with sendfile()
  • Application Server: Python scripting with shared memory architecture
  • Memory Management: Huge pages support and optimized memory layout
  • Process Architecture: Separate processes to avoid Python GIL limitations
  • JSON Configuration: Clean, maintainable configuration system
  • JSON Powered By:nlohmann/json C++ JSON library

📣 Why HTTP/1.2?

The Problem with HTTP/2 & HTTP/3

HTTP/2 Complexity Crisis:

  • Excessive complexity destroys HTTP/1.1's elegant simplicity
  • Everything packed into one "black box" without logical separation
  • Libraries are confusing and difficult to understand
  • TLS/SSL handling unnecessarily embedded in protocol

HTTP/3 UDP Issues:

  • Works only for precalculated CDN data
  • Creates new complexity without solving core issues

Our Solution: HTTP/1.2

HTTP/1.2fixes HTTP/1.1's single major flaw (broken pipelining) whileavoiding HTTP/2's complexity:

🎯 Key Innovation: Adding a simpleRequest-UUID header eliminates response ordering issues, making HTTP/2's complex Layer-7 multiplexing unnecessary.


🛠️ Build & Installation

Prerequisites

Operating System Support:

  • Ubuntu 22.04 (Jammy Jellyfish)
  • Ubuntu 24.04 (Noble Numbat)
  • Debian 12

Required Dependencies:

# core build toolsapt-get install git cmake# c++ boost librariesapt-get install libboost-all-dev# python development headersapt-get install python3-dev# c++ json libraryapt-get install nlohmann-json3-dev

Build Options

Standard Build:

cmake.makemake install

Debug Build:

cmake -DDEBUG_BUILD=1.makemake install

Java Backend Build:

export JAVA_HOME=/usr/lib/jvm/jdk-24.0.2-oracle-x64/cmake -DJAVA_BACKEND=1.makemake install

For complete build instructions, seeBUILD.md.


🧪 Testing

Comprehensive testing infrastructure ensures reliability:

  • Unit Tests: Core component validation (/test/unit/)
  • Integration Tests: End-to-end functionality (/test/integration/)
  • Performance Tests: Benchmarking and optimization (/test/performance/)
  • Evaluation Tests: Protocol compliance (/test/eval/)

Seetest documentation for detailed testing procedures.


⚙️ Technical Architecture

Process Model

+----------------+---------------+---------------+----------------+| Server Process | AS Process 1  | AS Process x  | Result Process ||                | Python Interp.| Python Interp.|                |+-----------------------------------------------------------------+| Shared Memory                                                   ||  - StaticFS Requests                                            ||  - AS Metadata                                                  ||  - AS Requests                                                  ||  - AS Results                                                   |+-----------------------------------------------------------------+

Design Principles:

  • Process-Based: Separate processes avoid Python GIL limitations
  • Shared Memory: High-performance IPC with atomic locks (kernel mutex-less)
  • Huge Pages: Memory optimization for better performance

Performance Philosophy: Epoll vs Coroutines

⚠️ Coroutine Warning: While trending, coroutines can becounterproductive for scalability if implemented incorrectly.

The Problem with incorrectly implemented Coroutines:

  • In case a single connection awaits a syscallread() result
  • Its similar to onepoll() for a single connection file descriptor
  • 10,000 connections = 10,000 syscalls (context switches)
  • Massive overhead for checking received data (unscalable)

Our Epoll Advantage:

  • Single syscall informs about multiple FDs with pending data
  • Used by nginx and other high-performance servers

📃 Documentation

Official Documentation

Online Resources

Protocol Specifications


🌐 Community & Support

Get Help & Discuss

Stay Updated


👋 Contributing

We welcome contributions! Whether you're:

  • 🐛Reporting bugs
  • 💡Suggesting features
  • 📝Improving documentation
  • 🔧Submitting code

Please seeCONTRIBUTING.md for guidelines.

Code Quality Standards:

  • Clean, readable, maintainable code
  • Comprehensive testing
  • Security-conscious development
  • Commit signing with GPG/SSH keys

⏰ Future Milestones

Short-term Goals

  • HTTP/1.1 Compatibility: Minimal SPA related features
  • x0 Framework Integration: Seamless SPA framework compatibility
  • HTTP/1.2 Protocol: Implementation including client library
  • Performance Benchmarks: Comprehensive HTTP/1.1, HTTP/2, HTTP/3 comparisons

Long-term Vision

  • Protocol Standardization: Submit HTTP/1.2 as official RFC
  • Enterprise Features: Advanced monitoring, analytics, management
  • Proxy Server Component: Complete the load balancing/reverse proxy module

SeeGitHub Milestones for detailed roadmap.


📝 License

GNU Affero General Public License v3.0 - SeeLICENSE for details.


🚀 Ready to experience the future of web protocols?
Made with ❤️ by Claus Prüfer / clickIT / WEBcodeX

About

Lightweight and fast HTTP/1.1, HTTP/1.2 (XML) Protocol with HTTP/2 flavour

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Sponsor this project

  •  
  •  

Contributors3

  •  
  •  
  •  

Languages


[8]ページ先頭

©2009-2025 Movatter.jp