HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
dgiagio
warp
Rust2018–2024
dgiagio / warp

warp

Create self-contained single binary applications

3Distinct people
6Mentions
0Explicit recommenders
2KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Create self-contained single binary applications

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:56:07 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year6 dated mentions

Observed mentions: 2018-10-12 19:28:19 UTC to 2024-09-14 08:00:20 UTC.

01232018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 comments20182019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments20212022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2024

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC110
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC101
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC000
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC000
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC303
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC000
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC101

What Hacker News says

6 sources
The first four parts of my Typesetting Markdown blog describes improving the user-friendliness of bash scripts. In particular, you can use bash to define a reusable script that allows isolating software dependencies, command-line arguments, and parsing. https://dave.autonoma.ca/blog/2019/05/22/typesetting-markdow... In effect, create a list of dependencies and arguments: #!/usr/bin/env bash source $HOME/bin/build-template DEPENDENCIES=( "gradle,https://gradle.org" "warp-packer,https://github.com/Reisz/warp/releases" "linux-x64.warp-packer,https://github.com/dgiagio/warp/releases" "osslsigncode,https://www.winehq.org" ) ARGUMENTS+=( "a,arch,Target operating system architecture (amd64)" "o,os,Target operating system (linux, windows, macos)" "u,update,Java update version number
Read the rest
(${ARG_JAVA_UPDATE})" "v,version,Full Java version (${ARG_JAVA_VERSION})" ) The build-template can then be reused to enhance other shell scripts. Note how by defining the command-line arguments as data you can provide a general solution to printing usage information: https://gitlab.com/DaveJarvis/KeenWrite/-/blob/main/scripts/... Further, the same command-line arguments list can be used to parse the options: https://gitlab.com/DaveJarvis/KeenWrite/-/blob/main/scripts/... If you want further generalization, it's possible to have the template parse the command-line arguments automatically for any particular script. Tweak the arguments list slightly by prefixing the name of the variable to assign to the option value provided on the CLI: ARGUMENTS+=( "ARG_JAVA_ARCH,a,arch,Target operating system architecture (amd64)" "ARG_JAVA_OS,o,os,Target operating system (linux, windows, macos)" "ARG_JAVA_UPDATE,u,update,Java update version number (${ARG_JAVA_UPDATE})" "ARG_JAVA_VERSION,v,version,Full Java version (${ARG_JAVA_VERSION})" ) If the command-line options require running different code, it is possible to accommodate that as well, in a reusable solution.
In Techniques I use to create a great user experience for shell scripts
It'll help build cross-platform desktop applications. In theory, it'll streamline using GitHub Actions to produce platform-specific binaries, such as my FOSS Markdown editor KeenWrite[0], without having to have a copy of every target operating system. To my knowledge, cross-compiling "native" Linux and Windows binaries using Java requires duct tape, chewing gum, and warp-packer.[1][2] If there's another way to cross-compile a Java application into a standalone binary for multiple target platforms, do tell! GraalVM isn't a panacea. For example, GraalVM cannot compile Renjin[3], a pure Java R interpreter, which means switching from Renjin to FastR. Not trivial. Other sinkholes likely lurk that'll only reveal themselves when walking through the weeds. [0]: https://github.com/DaveJarvis/keenwrite [1]: https://dave.autonoma.ca/blog/2020/06/29
Read the rest
In OpenJDK Proposes Project Galahad to Merge GraalVM Native Compilation
"Java -- possible, but you'll need a startup script to just call java -jar some-tool.jar; (also not a good fit for short-lived tools, mainly due to startup times;)" Technologies to look at: * Warp Packer -- https://github.com/dgiagio/warp/ * Liberica Native Image Kit -- https://bell-sw.com/pages/liberica-native-image-kit/ Warp Packer bundles my JavaFX desktop application, KeenWrite, into single binary executable files: * https://github.com/DaveJarvis/keenwrite/releases/download/2.... (Linux) * https://github.com/DaveJarvis/keenwrite/releases/download/2.... (Windows) * https://github.com/DaveJarvis/keenwrite/releases/download/2.... (JVM) The start-up time for the first launch of the .bin or .exe is slow because it unpacks to a user directory. Subsequent starts are fast enough, even when running from the command-line as a short-lived task.
Read the rest
Here's the script that creates the self-contained executable files: https://github.com/DaveJarvis/keenwrite/blob/master/installe... To create a release for all three files, I run a single shell script from a build machine: https://github.com/DaveJarvis/keenwrite/blob/master/release.... I could probably generate a binary for MacOS, but not enough people have asked.
In Single binary executable packages
My desktop text editor[1] is written using JavaFX and leans on Warp Packer[2] to create installer-free, multi-platform executable binaries (without jlink). A user contributed a new dark theme[3], which blends nicely with the desktop. The JavaFX-based WebView (an HTML rendering component) is lauded, but has no direct API to control the scroll position and is itself a memory hog. Scrolling must be handled through JavaScript, and that indirection is as unwieldy as you can probably imagine. FlyingSaucer is a workable alternative to WebView, but comes with numerous technical issues that rear themselves when embedding a Swing widget inside a JavaFX application---as I discovered during development. Were I to start from scratch, I would definitely seek out alternative cross-platform programming languages for desktop application development. The J
Read the rest
avaFX event-based model is top-notch, but there are too many technical gremlins to make implementation a smooth ride. (Such as improper handling of Alt+Tab, which leaves focus on the menu bar when returning to the application[4].) [1]: https://github.com/DaveJarvis/keenwrite [2]: https://github.com/dgiagio/warp [3]: https://i.ibb.co/QpqS0NS/screenshot.png [4]: https://stackoverflow.com/q/65765656/59087
In The decline and fall of Java on the desktop
PureScript has a C++ back-end, which is an interesting prospect: https://github.com/andyarvanitis/purescript-native Our development process is very pleasant. We use VS Code, .NET Core and Ionide as an IDE. I find an IDE essential for languages with global type-inference. For bundling, we use Core RT to create a self-contained application. This is then bundled using Warp (https://github.com/dgiagio/warp) to generate a single binary. The script is here https://github.com/LoopPerfect/buckaroo/blob/866ae97ffc82ab8... The final binary size is quite reasonable: - Linux 66.1 mb - macOS 63.9 mb - Windows 35.4 mb I haven't investigated why Windows is so much smaller!
In The Early History of F# [pdf]

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.