Untrack .claude/; placeholder README; ignore local config dirs

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Relism
2026-03-19 22:46:18 +01:00
co-authored by Claude Sonnet 4.6
parent 7c1edffd6e
commit f8c86e315f
3 changed files with 1 additions and 105 deletions
-23
View File
@@ -1,23 +0,0 @@
{
"permissions": {
"allow": [
"Bash(cd:*)",
"WebFetch(domain:github.com)",
"WebFetch(domain:raw.githubusercontent.com)",
"WebFetch(domain:api.github.com)",
"Bash(xargs grep:*)",
"Bash(jfr summary:*)",
"Bash(jfr print:*)",
"Bash(sort -t= -k4 -rn)",
"Bash(sed 's/.*objectClass = //')",
"Bash(sed 's/ \\(.*//')",
"Bash(sed 's/^\\\\s*//')",
"Bash(jar tf:*)",
"Bash(javap -c -p /c/Users/elorc/.m2/repository/dev/relism/fpr-core/1.1.0/fpr-core-1.1.0.jar!/dev/relism/fpr/core/internal/runtime/FrozenRouter.class)",
"Read(//c/tmp/**)",
"Bash(jar xf:*)",
"Bash(javap -c -p dev/relism/fpr/core/internal/runtime/FrozenRouter.class)",
"Bash(javap -c -p dev/relism/fpr/core/internal/runtime/RouteSearch.class)"
]
}
}
+1
View File
@@ -39,6 +39,7 @@ build/
.DS_Store .DS_Store
CLAUDE.md CLAUDE.md
.claude/
### Local / scratch ### ### Local / scratch ###
flash/src/main/java/dev/relism/Main.java flash/src/main/java/dev/relism/Main.java
-82
View File
@@ -1,83 +1 @@
# Flash # Flash
A high-performance HTTP/1.1 server library for Java 21+, built for low-latency workloads.
## Features
- **Virtual threads** — one virtual thread per connection via `Executors.newVirtualThreadPerTaskExecutor()`
- **Zero-allocation hot path** — header buffer reused across keep-alive requests; `ByteView` slices avoid copies
- **Fast routing** — `fpr-core` compiles routes into a byte-level finite automaton at first request; path params via `PathParams`
- **Two-tier router** — mounted sub-routers matched by longest prefix, then `FastPathRouterImpl` fallback
- **Middleware chain** — composable `Middleware` lambdas fused at registration time (no per-request allocation)
- **Chunked transfer** — `ChunkedInputStream` de-chunks on the fly, keeps socket positioned for pipelining
- **Request body** — `bytes()` for full materialization or `stream()` for zero-copy streaming
## Requirements
- Java 21+
- Maven 3.8+
## Build
```bash
mvn clean package -DskipTests
```
## Quick start
```java
HttpServer server = new HttpServer(
HttpServerConfiguration.builder().port(8080).build()
);
server.get("/hello", (req, res) -> "Hello, world!");
server.register(new MyHandler()); // @Route(path="/...", method=GET)
server.start().thenRun(() -> System.out.println("Listening on :8080"));
```
## Handler styles
**Lambda:**
```java
server.get("/ping", (req, res) -> "pong");
```
**Class-based (`@Route`):**
```java
@Route(path = "/users/{id}", method = HttpMethod.GET)
public class GetUser extends RequestHandler {
@Override
public Object handle(Request req, Response res) {
String id = req.pathParam("id");
return "{\"id\":\"" + id + "\"}";
}
}
```
**Middleware:**
```java
Middleware cors = next -> (req, res) -> {
res.header("Access-Control-Allow-Origin", "*");
return next.handle(req, res);
};
server.register(new GetUser(), cors);
```
## Maven dependency
```xml
<repositories>
<repository>
<id>relism-releases</id>
<url>https://maven.relism.dev/releases</url>
</repository>
</repositories>
<dependency>
<groupId>dev.relism</groupId>
<artifactId>flash</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
```