arXiv Open Access 2024

Leroy: Library Learning for Imperative Programming Languages

Abhiram Bellur Razan Alghamdi Kidus Workneh Joseph Izraelevitz
Lihat Sumber

Abstrak

Library learning is the process of building a library of common functionalities from a given set of programs. Typically, this process is applied in the context of aiding program synthesis: concise functions can help the synthesizer produce modularized code that is smaller in size. Previous work has focused on functional Lisp-like languages, as their regularity makes them more amenable to extracting repetitive structures. Our work introduces Leroy, which extends existing library learning techniques to imperative higher-level programming languages, with the goal of facilitating reusability and ease of maintenance. Leroy wraps the existing Stitch framework for library learning and converts imperative programs into a Lisp-like format using the AST. Our solution uses Stitch to do a top-down, corpus-guided extraction of repetitive expressions. Further, we prune abstractions that cannot be implemented in the programming language and convert the best abstractions back to the original language. We implement our technique in a tool for a subset of the Python programming language and evaluate it on a large corpus of programs. Leroy achieves a compression ratio of 1.04x of the original code base, with a slight expansion when the library is included. Additionally, we show that our technique prunes invalid abstractions.

Topik & Kata Kunci

Penulis (4)

A

Abhiram Bellur

R

Razan Alghamdi

K

Kidus Workneh

J

Joseph Izraelevitz

Format Sitasi

Bellur, A., Alghamdi, R., Workneh, K., Izraelevitz, J. (2024). Leroy: Library Learning for Imperative Programming Languages. https://arxiv.org/abs/2410.06438

Akses Cepat

Lihat di Sumber
Informasi Jurnal
Tahun Terbit
2024
Bahasa
en
Sumber Database
arXiv
Akses
Open Access ✓