snailgun-cli


License

License

Categories

Categories

CLI User Interface
GroupId

GroupId

me.vican.jorge
ArtifactId

ArtifactId

snailgun-cli_2.12
Last Version

Last Version

0.4.0
Release Date

Release Date

Type

Type

jar
Description

Description

snailgun-cli
snailgun-cli
Project URL

Project URL

https://github.com/jvican/snailgun
Project Organization

Project Organization

me.vican.jorge
Source Code Management

Source Code Management

https://github.com/jvican/snailgun

Download snailgun-cli_2.12

How to add to project

<!-- https://jarcasting.com/artifacts/me.vican.jorge/snailgun-cli_2.12/ -->
<dependency>
    <groupId>me.vican.jorge</groupId>
    <artifactId>snailgun-cli_2.12</artifactId>
    <version>0.4.0</version>
</dependency>
// https://jarcasting.com/artifacts/me.vican.jorge/snailgun-cli_2.12/
implementation 'me.vican.jorge:snailgun-cli_2.12:0.4.0'
// https://jarcasting.com/artifacts/me.vican.jorge/snailgun-cli_2.12/
implementation ("me.vican.jorge:snailgun-cli_2.12:0.4.0")
'me.vican.jorge:snailgun-cli_2.12:jar:0.4.0'
<dependency org="me.vican.jorge" name="snailgun-cli_2.12" rev="0.4.0">
  <artifact name="snailgun-cli_2.12" type="jar" />
</dependency>
@Grapes(
@Grab(group='me.vican.jorge', module='snailgun-cli_2.12', version='0.4.0')
)
libraryDependencies += "me.vican.jorge" % "snailgun-cli_2.12" % "0.4.0"
[me.vican.jorge/snailgun-cli_2.12 "0.4.0"]

Dependencies

compile (3)

Group / Artifact Type Version
org.scala-lang : scala-library jar 2.12.11
me.vican.jorge : snailgun-core_2.12 jar 0.4.0
com.github.scopt : scopt_2.12 jar 4.0.0-RC2

test (6)

Group / Artifact Type Version
io.monix : monix_2.12 jar 3.3.0
com.lihaoyi : utest_2.12 jar 0.7.2
com.lihaoyi : pprint_2.12 jar 0.6.0
ch.epfl.scala : nailgun-server jar ee3c4343
com.googlecode.java-diff-utils : diffutils jar 1.3.0
org.slf4j : slf4j-api jar 1.7.26

Project Modules

There are no modules declared in this project.

snailgun ๐ŸŒ ๐Ÿ”ซ

Build Status Maven Central

Snailgun is a Nailgun client written in Scala that can be used as a library and/or compile to native. Snailgun aims to be a flexible, cross-platform and zero-dependency nailgun client you can embed in any tool.

Motivation

Nailgun is a useful protocol to communicate lightweight, short-lived clients with long-running servers.

Developers have traditionally used Nailgun to communicate native-like clients with services running on the JVM. However, there are many use cases that require JVM clients connect to Nailgun servers and those are currently unsupported.

Snailgun is an alternative implementation to the default Python and C clients of the Nailgun protocol that intends to be extensible, fast and support both JVM and Native clients.

  • It provides a simple API that for any JVM-based programming language.
  • It can be compiled to a Native binary that is 10x faster than the Python client through GraalVM's Native Image.

Snailgun's major use cases are:

  1. You need a client that talks the Nailgun protocol but you need to customize it.
  2. You need to communicate with a Nailgun server implemented in another language.
  3. You need to communicate a JVM client with a Nailgun server on the JVM. For example, if the server cannot be compiled to native or synchronizes concurrent clients.

Usage ๐Ÿ”ง

Library

The API is meant to be simple and extensible. The snailgun-core directory that hosts the implementation. The entrypoint is Client and the full protocol implementation is Protocol.

Snailgun is published to Maven Central. Add it to your project with:

libraryDependencies += "me.vican.jorge" %% "snailgun" % "SNAILGUN_VERSION"

where SNAILGUN_VERSION is the latest git tag in this repository.

Binary

You can generate a Snailgun binary by following the steps described in the GraalVM Native Image guide.

To generate a native binary out of this repository, run snailgun-cli/graalvm-native-image:packageBin in a machine that has GraalVM and native-image installed.

Versions

Version
0.4.0
0.3.1
0.3.0
0.2.0