Practical Run-time Checking via Unobtrusive Property Caching
Nataliia Stulova, Jos\'e F. Morales, Manuel V. Hermenegildo

TL;DR
This paper introduces an efficient run-time checking method using unobtrusive property caching through memoization, significantly reducing overhead while maintaining exhaustive property verification in dynamic languages.
Contribution
It presents a novel, system-independent memoization approach for run-time property checking that requires no data structure modifications and is demonstrated within the Ciao framework.
Findings
Significant reduction in run-time checking overhead with small cache sizes
Approach is exhaustive and more efficient than standard checking methods
Prototype implementation confirms practical effectiveness
Abstract
The use of annotations, referred to as assertions or contracts, to describe program properties for which run-time tests are to be generated, has become frequent in dynamic programing languages. However, the frameworks proposed to support such run-time testing generally incur high time and/or space overheads over standard program execution. We present an approach for reducing this overhead that is based on the use of memoization to cache intermediate results of check evaluation, avoiding repeated checking of previously verified properties. Compared to approaches that reduce checking frequency, our proposal has the advantage of being exhaustive (i.e., all tests are checked at all points) while still being much more efficient than standard run-time checking. Compared to the limited previous work on memoization, it performs the task without requiring modifications to data structure…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware Testing and Debugging Techniques · Logic, programming, and type systems · Parallel Computing and Optimization Techniques
