Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

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

Scala combinator library for building Finagle HTTP services

License

NotificationsYou must be signed in to change notification settings

finagle/finch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Finch is a thin layer of purely functional basic blocks atop ofFinagle forbuilding composable HTTP APIs. Its mission is to provide the developers simple and robust HTTP primitives being asclose as possible to the bare metal Finagle API.

Badges

Scala CICoverage StatusGitterMaven Central

Standard Modules

Finch uses multi-project structure and contains of the followingmodules:

Additional Modules

Finch's Github organization has even more modules (these are, however, not published regularly;reach out if you need published artifacts):

Installation

Every Finch module is published at Maven Central. Use the followingsbt snippet ...

libraryDependencies++=Seq("com.github.finagle"%%"[finch-module]"%"[version]")

Hello World!

This "Hello World!" example is built with justfinch-core:

importcats.effect.{IO,IOApp}importio.finch._objectMainextendsIOApp.SimplewithEndpoint.Module[IO] {overridedefrun:IO[Unit]= {valapi:Endpoint[IO,String]= get("hello") {Ok("Hello, World!") }Bootstrap[IO].serve[Text.Plain](api).listen(":8080").useForever  }}

Seeexamples sub-project for more complete examples.

Quickstart

Usefinch.g8 template to quickly bootstrap a minimal Finch project:

  • sbt new finch/finch.g8
  • cd helloworld
  • sbt run
  • curl http://localhost:8081/hello

Performance

We usewrk to load testFinch+Circe againstFinagle+Jacksonto get some insight on how much overhead, an idiomatic Finch application written in a purelyfunctional way, involves on top of Finagle/Jackson. The results are quite impressive (for a pre-1.0version): Finch performs on95% of Finagle's throughput.

Here is the first three runs of the benchmark on 2013 MB Pro (2.8 GHz Intel Core i7 w/ 16G RAM).

BenchmarkRun 1Run 2Run 3
Finagle + Jackson29014.68 req/s36783.21 req/s39924.42 req/s
Finch + Circe28762.84 req/s36876.30 req/s37447.52 req/s

Finch is also load tested against a number of Scala HTTP frameworks and libraries as part of theTechEmpower benchmark. The most recent round showed that Finch performs really wellthere,scoring a second place across all the Scala libraries.

Documentation

Adopters

Related Projects

Contributing

There are plenty of ways to contribute into Finch:

  • Give it a star
  • Join theGitter room and leave a feedback or help with answering users' questions
  • Submit a PR (there is an issue label"easy" for newcomers)
  • Be cool and wear aFinch T-Shirt

The Finch project supports theTypelevelcode of conduct and wants all of its channels(Gitter, GitHub, etc.) to be welcoming environments for everyone.

Finch is currently maintained byVladimir Kostyukov,Travis Brown,Ryan Plessner, andSergey Kolbasov. After the 1.0 release, allpull requests will require two sign-offs by a maintainer to be merged.

License

Licensed under theApache License, Version 2.0 (the "License");you may not use this software except in compliance with the License.

Unless required by applicable law or agreed to in writing, softwaredistributed under the License is distributed on an "AS IS" BASIS,WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.See the License for the specific language governing permissions andlimitations under the License.


[8]ページ先頭

©2009-2025 Movatter.jp