Skip to content

🐦 Fast HTTP server that supports handlers written in Starlark

License

Notifications You must be signed in to change notification settings

xyproto/gnetlark

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

59 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

gnetlark logo

GoDoc Go Report Card

Fast HTTP server that supports handlers written in Starlark.

Pronounced as "jetlark", just to keep people on their toes.

Features and limitations

  • It's fast, due to the excellent performance of gnet.
  • Starlark is easy to learn and use. It is similar to Python.
  • The selection of functions available from Starlark scripts is currently a bit limited. There is no file or database access.
  • gnetlark offers an easy and fun way to try out the Starlark programming language.
  • Support for providing and calling REST/JSON APIs might be added in the future.
  • Serving static files is currently not supported, unless you embed them.

Installation

Quick installation of the latest version, using Go 1.17 or later:

go install github.com/xyproto/gnetlark/cmd/gnetlark@latest

Another way of building and installing the server:

git clone https://github.com/xyproto/gnetlark
cd gnetlark/cmd/gnetlark
go build
sudo install -Dm755 gnetlark /usr/bin/gnetlark

Configuration

One way to allow access to port 80 on Linux:

sudo setcap cap_net_bind_service=+ep /usr/bin/gnetlark

It's also possible to specify a port with --port or run it as root (not recommended).

Depends on

Screenshot

Screenshot of a page served by index.star, with the server running on port 7711:

screenshot

Served in 0ms:

performance

Example

A short Starlark script for handling requests and outputting "Hello, World!" (hello.star):

def index(status, msg, method, path, date):
    return "HTTP/1.1 " + status + "\r\nServer: gnetlark\r\nDate: " + date + "\r\nContent-Type: text/plain; charset=utf-8\r\n\r\n" + "Hello, World!"

The "Hello World" page can be served by a command like this:

gnetlark -main hello.star -port 7711

General info

About

🐦 Fast HTTP server that supports handlers written in Starlark

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published