GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - formatjs/hermes: Native Bazel overlay for Facebook Hermes with hermetic LLVM builds.

BranchesTags
Open more actions menu

Latest commit

 

History

8 Commits
8 Commits

Folders and files

NameName
Last commit message
Last commit date
.github/workflows
.github/workflows
 
 
bazel
bazel
 
 
bcr
bcr
 
 
docs
docs
 
 
examples/smoke
examples/smoke
 
 
tests
tests
 
 
tools
tools
 
 
.bazelrc
.bazelrc
 
 
.bazelversion
.bazelversion
 
 
.gitattributes
.gitattributes
 
 
.gitignore
.gitignore
 
 
.release-please-manifest.json
.release-please-manifest.json
 
 
AGENTS.md
AGENTS.md
 
 
BUILD.bazel
BUILD.bazel
 
 
CHANGELOG.md
CHANGELOG.md
 
 
LICENSE
LICENSE
 
 
MODULE.bazel
MODULE.bazel
 
 
MODULE.bazel.lock
MODULE.bazel.lock
 
 
README.md
README.md
 
 
REPO.bazel
REPO.bazel
 
 
buildbuddy.yaml
buildbuddy.yaml
 
 
release-please-config.json
release-please-config.json
 
 
repositories.bzl
repositories.bzl
 
 
version.txt
version.txt
 
 

Repository files navigation

Hermes for Bazel

Native Bazel overlay for facebook/hermes, pinned to static_h commit 393a539e645944a6ce879afc18ea8ddaa9232a08. Uses rules_cc, Bazel template actions, hermetic code generation, and hermeticbuild/hermetic-llvm.

Consume

Until the first BCR entry lands, use a commit-pinned archive_override for this repository, or local_path_override for a checkout:

bazel_dep(name = "hermes")
local_path_override(module_name = "hermes", path = "/path/to/hermes")

bazel_dep(name = "llvm", version = "0.8.25", dev_dependency = True)
register_toolchains("@llvm//toolchain:all", dev_dependency = True)

BCR downloads upstream Hermes directly and applies the registry's overlay/ build files. The checkout override above uses a development harness that fetches the same pinned source. Consumers use:

  • @hermes//:hermes_vm: Hermes runtime, compiler support, and JSI.
  • @hermes//:headers: public Hermes and JSI headers.
  • @hermes//:hermesc: bytecode compiler; code generation builds it for execution.

Consumers select their C/C++ toolchain. This repository's tests use hermetic LLVM 23.1.2 through module llvm 0.8.25. Byte embedding uses Bazel's Python toolchain.

rules_cc, rules_python, platforms, and package_metadata remain normal dependencies: consumers load them while building Hermes. LLVM, formatting, and root Python version selection are development dependencies.

Build

Run builds on Linux:

bazel test --config=linux //...
cd examples/smoke
bazel test --config=linux //...
bazel build --config=linux @hermes//:hermesc

The consumer test evaluates JavaScript through JSI, including Unicode regexp properties and Promise builtins loaded from generated internal bytecode. Root tests also run upstream ADT, Unicode conversion, and regex suites. CI covers macOS ARM64 and Linux x86_64 with GNU libc; BCR presubmit builds on Linux. Linux configuration assumes glibc; hermetic LLVM's default GNU target uses glibc 2.28. Musl is outside the current header setup. Other target configurations have not been validated.

BuildBuddy runs Linux checks and cross-compiles macOS smoke archives through with_cfg. GitHub Actions only downloads and runs them. See CI.

The runtime uses Hades GC and Unicode Lite, with built-in Intl and debugger disabled. Embedders can install native Intl implementations through JSI.

Upkeep

repositories.bzl owns the source commit/checksum and selected BCR version. The proxy construction patch ensures construct traps do not read newTarget.prototype; forwarded constructors allocate their own receiver. Runtime smoke tests cover trap order, derived constructors, and nested proxies. bcr/overlay/ holds the maintained build definitions and helpers; bcr/patches/ holds source fixes. Publication generates a complete versioned BCR entry and its checksums. Historical entries stay in BCR and release tags. Updating Hermes requires reviewing source lists, configuration headers, and internal-bytecode generation, then running root and consumer tests. bazel run //:format formats Bazel files.

Release automation follows rules_formatjs. See releasing and source provenance.

About

Native Bazel overlay for Facebook Hermes with hermetic LLVM builds.

Resources

Readme
MIT license

Code of conduct

Code of conduct
Activity
Custom properties

Stars

0 stars

Watchers

0 watching

Forks

0 forks
Report repository

Releases

Packages

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.