Leroy: Library Learning for Imperative Programming Languages

Guardado en:
Detalles Bibliográficos
Publicado en:arXiv.org (Oct 9, 2024), p. n/a
Autor principal: Bellur, Abhiram
Otros Autores: Alghamdi, Razan, Workneh, Kidus, Izraelevitz, Joseph
Publicado:
Cornell University Library, arXiv.org
Materias:
Acceso en línea:Citation/Abstract
Full text outside of ProQuest
Etiquetas: Agregar Etiqueta
Sin Etiquetas, Sea el primero en etiquetar este registro!

MARC

LEADER 00000nab a2200000uu 4500
001 3115229343
003 UK-CbPIL
022 |a 2331-8422 
035 |a 3115229343 
045 0 |b d20241009 
100 1 |a Bellur, Abhiram 
245 1 |a Leroy: Library Learning for Imperative Programming Languages 
260 |b Cornell University Library, arXiv.org  |c Oct 9, 2024 
513 |a Working Paper 
520 3 |a 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. 
653 |a Programming languages 
653 |a Python 
653 |a Learning 
653 |a Libraries 
653 |a LISP (programming language) 
653 |a Compression ratio 
653 |a Imperative programming 
653 |a Repetitive structures 
653 |a Functionals 
700 1 |a Alghamdi, Razan 
700 1 |a Workneh, Kidus 
700 1 |a Izraelevitz, Joseph 
773 0 |t arXiv.org  |g (Oct 9, 2024), p. n/a 
786 0 |d ProQuest  |t Engineering Database 
856 4 1 |3 Citation/Abstract  |u https://www.proquest.com/docview/3115229343/abstract/embedded/7BTGNMKEMPT1V9Z2?source=fedsrch 
856 4 0 |3 Full text outside of ProQuest  |u http://arxiv.org/abs/2410.06438