runtimeverification / runtimeverification/haskell-backend

New binary `haskell-kompile` for doing compile-time optimizations

Open
#3,799 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

runtimeverification/hs-backend-booster
Dominant language
Haskell
Stars
224
Forks
43
PR merge metrics
No merged PRs in 30d

Description

Requirements:

  • Kore -> Kore transformation, works in both text form and binary form. The reason is so that LLVM backend can benefit from these optimizations too.
  • Does the existing kompile-time validation that kore-parse does (replace all calls into haskell backend at kompile time with call to this binary).
  • Implement the same simple algorithm for preserves-definedness that is implemented here (no fancy #Ceil simplification): https://github.com/runtimeverification/k/pull/2963
From the other duplicate issue:

We need to keep in mind the future requirement of exposing a Kore compilation tool which will implement several optimization passes over the kompiled definition.

Definition processing which will be moved to this tool:

  • parsing
  • syntactical validation
  • semantic validation (like sort checking, application argument count etc.)
  • rule optimizations (adding the preserves-definedness attribute, rule indexing, static function expansion, etc.)

For now, we need to make sure that the processing described above isn't tightly coupled with the symbolic execution API we're building.

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 by reviewing the existing kompile-time validation performed by kore-parse and the simple preserves-definedness algorithm in PR 2963. The work is complete when a separate haskell-kompile binary performs the described Kore transformations in text and binary form without coupling them to the symbolic execution API.

Written by the indexing model from the issue text.

Assessment

Tech stack
haskell
Domain
compilers
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.