Skip to content

WEBcodeX1/http-1.2

🚀 HTTP/1.2 - FalconAS

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


📌 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 building HTTP/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 repository git clone https://github.com/WEBcodeX1/http-1.2.git cd 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 install cmake . make sudo make install # start using systemd (automatically configured during install) sudo systemctl daemon-reload sudo systemctl enable falcon-as sudo 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, see BUILD.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.2 fixes HTTP/1.1's single major flaw (broken pipelining) while avoiding HTTP/2's complexity:

🎯 Key Innovation: Adding a simple Request-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 tools apt-get install git cmake # c++ boost libraries apt-get install libboost-all-dev # python development headers apt-get install python3-dev # c++ json library apt-get install nlohmann-json3-dev

Build Options

Standard Build:

cmake . make make install

Debug Build:

cmake -DDEBUG_BUILD=1 . make make install

Java Backend Build:

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

For complete build instructions, see BUILD.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/)

See test 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 be counterproductive for scalability if implemented incorrectly.

The Problem with incorrectly implemented Coroutines:

  • In case a single connection awaits a syscall read() result
  • Its similar to one poll() 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 see CONTRIBUTING.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

See GitHub Milestones for detailed roadmap.


📝 License

GNU Affero General Public License v3.0 - See LICENSE 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

  •  
  •