meiseayoung
e9d14a35f6
fix(streaming): use direct socket fd writes for real-time SSE streaming
...
Previously, PicoevStreamWriter used picohttpparser.Response.raw() to write
streaming data, which only buffered the data until the entire request handler
completed. This caused SSE responses to be delayed until all sleep() calls
finished (e.g., 2.89s delay for /stream-text endpoint).
Changes:
- Modified PicoevStreamWriter to use socket fd directly from picohttpparser.Response
- Implemented write_to_fd() using C.send() for immediate data delivery
- Updated handle_picoev_streaming_response() to write HTTP headers directly to socket
- Added C.send() function declaration for direct socket writes
This fix enables true real-time streaming where each write() or write_sse()
call immediately sends data to the client, rather than buffering until
the callback completes.
All 74 test files pass with no regressions.
2026-01-04 15:43:01 +08:00
meiseayoung
9ae9170bcb
feat: add SSE streaming helper support
...
Add Server-Sent Events (SSE) and streaming response support with three
streaming functions:
- stream(): Basic binary streaming with chunked transfer encoding
- stream_text(): Text streaming with proper Content-Type headers
- stream_sse(): SSE event streaming with full event field support
Features:
- SSEEvent struct with data, event, id, retry fields
- StreamContext for write, writeln, write_sse, sleep, pipe operations
- Multi-line data handling in SSE events
- Custom error handler support
- Client disconnect detection via on_abort callback
- Integrated with both Picoev and uSockets backends
New files:
- streaming.v: Core streaming implementation
- examples/sse_demo.v: Comprehensive SSE demo with test page
- tests/test_stream_*.v: 62 property-based tests
Updated:
- picoev_server.v: PicoevStreamWriter integration
- usockets_server.v: UsocketsStreamWriter integration
- README.md: SSE streaming documentation
2026-01-04 15:13:28 +08:00
meiseayoung
6ab6d3b99e
feat(websocket): add WebSocket Helper with RFC 6455 compliance
...
Add comprehensive WebSocket support for v-hono framework, inspired by Hono.js WebSocket Helper.
Features:
- upgrade_websocket() function for WebSocket route handlers
- Event-based callbacks: on_open, on_message, on_close, on_error
- WSContext with send(), send_bytes(), send_json(), close() methods
- Connection state tracking (connecting, open, closing, closed)
- Configurable options: ping_interval, max_message_size, timeout, protocols
- Subprotocol negotiation support
- Ping/pong keep-alive handling
- Message size validation with 1009 close code
- Integration with picoev and uSockets backends
Protocol Compliance:
- RFC 6455 compliant handshake with Sec-WebSocket-Accept computation
- Frame encoding/decoding with proper masking
- Close handshake with status codes and reasons
- Text and binary message frame support
Testing:
- 13 property-based test files with 82 tests total
- Validates handshake, frame encoding, masking, JSON round-trip
- Tests context preservation, route patterns, connection state
- All existing tests pass (no regressions)
Files added:
- websocket.v: Core WebSocket implementation
- examples/websocket_demo.v: Chat room example
- examples/websocket_test.html: Browser test client
- tests/test_websocket_*.v: Property-based tests
Files modified:
- app.v: Add ws() method for WebSocket routes
- middleware.v: Export WebSocket types and functions
- picoev_server.v: WebSocket upgrade detection
- usockets_server.v: WebSocket upgrade detection
- README.md: WebSocket documentation
2026-01-04 13:38:12 +08:00
meiseayoung
4e2c6a90c3
feat: add 7 built-in middleware components inspired by Hono.js
...
New Middleware:
- CORS: Cross-Origin Resource Sharing with full configuration support
- Cookie Helper: Cookie management with signed cookie support (HMAC-SHA256)
- JWT: JSON Web Token authentication (HS256/384/512)
- Bearer Auth: Simple Bearer token authentication
- Compression: Gzip and deflate response compression
- Rate Limiting: Request rate limiting with customizable stores
- Validator: Schema-based request validation
Features:
- Context store for middleware data sharing (get/set/get_client_ip)
- Middleware export module with utility functions
- Comprehensive property-based tests for all middleware
- Example file demonstrating all middleware usage
Files Added:
- cors.v, cookie.v, jwt.v, bearer_auth.v, compress.v, rate_limit.v, validator.v
- middleware.v (unified exports)
- examples/middleware_demo.v
- tests/test_*.v (9 new test files)
Documentation:
- Updated README.md with detailed middleware usage guide
- Added Schema Builder API documentation
2026-01-04 11:11:15 +08:00
meiseayoung
44ba82c194
chore: update v.mod version
2026-01-03 20:50:24 +08:00
meiseayoung
9eb360926b
feat(usockets): optimize high concurrency support up to 10,000+ connections
...
- Increase uSockets listen() backlog from 512 to 16384 in bsd.c
- Add high concurrency test suite (5000-10000 concurrent connections)
- Add HIGH_CONCURRENCY.md documentation with optimization guide
- Add usockets/build.sh script for rebuilding uSockets library
- Update README with latest benchmark results
Performance (macOS M3 Max):
- 5,000 concurrent: 81,524 RPS, 100% success
- 10,000 concurrent: 24,198 RPS, 100% success
System requirements:
- kern.ipc.somaxconn >= 8192
- ulimit -n 65535
2026-01-03 20:45:30 +08:00
meiseayoung
3b8d21dd0d
fix: update import path to VPM package name (meiseayoung.hono)
...
- Change all `import hono` to `import meiseayoung.hono` in code and docs
- Ensure compatibility with VPM installation via `v install meiseayoung.hono`
2026-01-02 22:05:12 +08:00
meiseayoung
43aae4f10d
chore: update v.mod version
2026-01-02 21:51:01 +08:00
meiseayoung
05bb2d6c95
feat: cross-platform uSockets support and route cache optimization
...
1. Cross-platform uSockets configuration
- Use @VMODROOT for portable library paths
- Support macOS (arm64/x86_64), Windows, and Linux
- Auto-detect Homebrew paths for libuv on macOS
2. Route cache optimization (3x performance boost)
- Replace LRU cache with FastRouteCache for dynamic routes
- Zero-overhead cache lookup (no TTL check, no LRU reordering)
- Dynamic route performance: 30k -> 97k RPS
3. New test files
- Go-based integration tests for picoev and uSockets
- FastCache optimization validation tests
- Benchmark comparison tools
2026-01-02 21:44:07 +08:00
meiseayoung
9aefe5714d
chore: update v.mod version
2025-12-31 18:35:29 +08:00
meiseayoung
1fc22044c3
perf: optimize HTTP parsing with zero-allocation techniques
...
- Refactor parse_path_and_query() to use single-pass traversal instead of split()
- Add eq_ignore_case() and contains_ignore_case() to avoid to_lower() allocations
- Optimize HTTP method parsing with first-char branching (parse_http_method_fast)
- Optimize Keep-Alive header check to avoid string allocations
- Apply optimizations to all server backends: picoev, usockets, and app.v
Performance improvements:
- Query string parsing: 20-44% faster
- Keep-Alive check: 82-90% faster
- HTTP method parsing: eliminates string comparison overhead
- Response header processing: removes to_lower() allocations
All 20+ test suites pass with no regressions.
2025-12-31 18:34:46 +08:00
meiseayoung
b478269d8e
chore: update v.mod version
2025-12-31 17:38:29 +08:00
meiseayoung
69d1385ced
perf: 0 middleware ignore copy
2025-12-31 17:37:51 +08:00
meiseayoung
1482b9c4d9
doc: add Framework Comparison
2025-12-31 16:04:44 +08:00
meiseayoung
0937dd268c
chore: update v.mod version
2025-12-31 15:46:10 +08:00
meiseayoung
07382ab622
feat: integration usockets backend
2025-12-31 15:44:51 +08:00
meiseayoung
5375b7394f
chore: update v.mod version
2025-12-30 21:40:39 +08:00
meiseayoung
d0298ea577
fix: In high concurrency (200+), V-Hono experiences an error where the connection is reset problem
2025-12-30 19:23:09 +08:00
meiseayoung
8e1007a1b4
chore: update v.mod version
2025-12-30 18:42:02 +08:00
meiseayoung
6cdba50f36
fix: Remove duplicate response headers
2025-12-30 18:41:34 +08:00
meiseayoung
418ead392b
chore: update v.mod version
2025-12-30 18:29:52 +08:00
meiseayoung
e305abba2b
fix: fix the issue of During ultra-high concurrency (5000 req, 200 concurrent) URL Params testing, stability issues were encountered (success rate only 0.24%).
2025-12-30 18:29:03 +08:00
meiseayoung
e22f612f24
chore: update v.mod version
2025-12-30 17:32:05 +08:00
meiseayoung
a38aeea614
perf: use picoev as default Server for improve response concurrency
2025-12-30 17:31:13 +08:00
meiseayoung
ee2818782b
chore: update v.mod version
2025-12-30 14:27:57 +08:00
meiseayoung
645d8c2dda
feat: add redirect method
2025-12-30 14:25:35 +08:00
meiseayoung
6fe79d298d
chore: use x.json2 module replace json_parser
2025-12-30 12:58:42 +08:00
meiseayoung
a95485dd25
migr: migration json to x.json2
2025-12-30 12:40:30 +08:00
meiseayoung
85b001225e
doc: remove publish doc
2025-12-30 11:15:44 +08:00
meiseayoung
8825ef9b25
chore: change module and repo name
2025-12-30 11:12:48 +08:00
meiseayoung
782a4e7795
refc: Refactor project structure
2025-12-30 11:00:46 +08:00
meiseayoung
369655a9ea
doc: rewrite README.MD content
2025-12-29 18:06:05 +08:00
meiseayoung
e1a86d108b
fix: 修复路由分组功能; 添加Hono app添加all,not_found,on_error方法
2025-12-29 17:54:52 +08:00
meiseayoung
3ef232a077
perf: 静态路由修改为简单的map缓存
2025-12-29 12:14:20 +08:00
meiseayoung
7c1aa656ab
chore: 记录HTTP Keep-Alive 连接复用不支持的问题
2025-12-26 15:52:24 +08:00
meiseayoung
3355e274e2
perf: 重构优化路由性能,添加日志系统,优化大文件内存占用,加强输入验证及路径安全等
2025-12-26 13:46:25 +08:00
meiseayoung
1f8e9ac11e
Update v.mod
2025-07-11 11:24:14 +08:00
meiseayoung
a59b768d94
Update README.MD
2025-07-10 22:08:44 +08:00
meiseayoung
d09b01dbb2
Update README.MD
2025-07-10 22:04:45 +08:00