runtimeverification / runtimeverification/llvm-backend

LLVM-Backend Generated Interpreter C API Documentation

Open
#692 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bindings
Dominant language
C++
Stars
43
Forks
22
PR merge metrics
No merged PRs in 30d

Description

The LLVM backend, in conjunction with the tool llvm-kompile, can generate object files which contain the entire definition of an K semantics as machine object code.

These object files can then be used to link the LLVM-generated interpreters into custom C code, or any language that supports C FFIs.

However, currently, the interface that the LLVM-backend generated interpreters expose is a mixture of hard-coded and compile-time generated symbols, and there is no documentation of which sybmols are exported or best practices around, e.g., which symbols are considered part of a stable API and which symbols are considered internal and should not be explicitly linked against.

Such documentation would not only enable K developers to more easily productize K by adapting to specific client needs, it would also enable more possible uses of K in the broader community.

For those reasons, I think it is worth documenting these symbols (even if the documentation is marked experimental, as needed).

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the LLVM backend and the llvm-kompile-generated interpreters described in the issue. Inventory the hard-coded and compile-time-generated symbols exposed by the object files, then document which are stable or internal and the recommended C FFI linking practices.

Written by the indexing model from the issue text.

Assessment

Tech stack
c, cpp
Domain
api, documentation
Issue type
Documentation
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.