20 papers
15 files
27 references

Papers Referenced in This Repository

Number Parsing at a Gigabyte per Second

Daniel Lemire
2021
7 references

With disks and networks providing gigabytes per second, parsing decimal numbers from strings becomes a bottleneck. We consider the problem of parsing decimal numbers to the nearest binary floating-point value. The general problem requires variable-precision arithmetic. However, we need at most 17 di...

Show 5 references in code

Macros that Work Together

2012
3 references

Abstract Racket is a large language that is built mostly within itself. Unlike the usual approach taken by non-Lisp languages, the self-hosting of Racket is not a matter of bootstrapping one implementation through a previous implementation, but instead a matter of building a tower of languages and l...

Show 3 references in code

Practical type inference for arbitrary-rank types

Simon L. Peyton Jones, Dimitrios Vytiniotis, Stephanie Weirich, Mark Shields
2007
2 references

Abstract Haskell's popularity has driven the need for ever more expressive type system features, most of which threaten the decidability and practicality of Damas-Milner type inference. One such feature is the ability to write functions with higher-rank types – that is, functions that take polymorph...

Show 2 references in code

Taming the wildcards: combining definition- and use-site variance

John Altidor, S. Huang, Y. Smaragdakis
2011
1 reference

Variance allows the safe integration of parametric and subtype polymorphism. Two flavors of variance, definition-site versus use-site variance, have been studied and have had their merits hotly debated. Definition-site variance (as in Scala and C#) offers simple type-instantiation rules, but causes ...

Show 1 reference in code

AN ANALYSIS OF THE LANCZOS GAMMA APPROXIMATION

Glendon Ralph Pugh
2004
1 reference

This thesis is an analysis of C . Lanczos' approximation of the classical gamma function Γ(z + 1) as given in his 1964 paper "A Precision Approximation of the Gamma Function". The purposes of this study are: (i) to explain the details of Lanczos' paper, including proof's of all claims made by the au...

Show 1 reference in code

Polymorphism, subtyping, and type inference in MLsub

Stephen Dolan, Alan Mycroft
2017
1 reference

We present a type system combining subtyping and ML-style parametric polymorphism. Unlike previous work, our system supports type inference and has compact principal types. We demonstrate this system in the minimal language MLsub, which types a strict superset of core ML programs. This is made possi...

Show 1 reference in code

Alias burying: Unique variables without destructive reads

J. Boyland
2001
1 reference

Abstract An unshared object can be accessed without regard to possible conflicts with other parts of a system, whether concurrent or single‐threaded. A unique variable (sometimes known as a ‘free’ or ‘linear’ variable) is one that either is null or else refers to an unshared object. Being able to de...

Show 1 reference in code

How to make ad-hoc polymorphism less ad hoc

P. Wadler, Stephen Blott
1989
1 reference

This paper presents type classes, a new approach to ad-hoc polymorphism. Type classes permit overloading of arithmetic operators such as multiplication, and generalise the "eqtype variables" of Standard ML. Type classes extend the Hindley/Milner polymorphic type system, and provide a new approach to...

Show 1 reference in code

Three layer cake for shared-memory programming

A. Robison, Ralph E. Johnson
2010
1 reference

There are many different styles of parallel programming for shared-memory hardware. Each style has strengths, but can conflict with other styles. How can we use a variety of these styles in one program and minimize their conflict and maximize performance, readability, and flexibility? This paper sur...

Show 1 reference in code

Work-first and help-first scheduling policies for async-finish task parallelism

Yi Guo, R. Barik, Raghavan Raman, Vivek Sarkar
2009
1 reference

Multiple programming models are emerging to address an increased need for dynamic task parallelism in applications for multicore processors and shared-address-space parallel computing. Examples include OpenMP 3.0, Java Concurrency Utilities, Microsoft Task Parallel Library, Intel Thread Building Blo...

Show 1 reference in code

Experience Report: Developing the Servo Web Browser Engine using Rust

2015
1 reference

All modern web browsers - Internet Explorer, Firefox, Chrome, Opera, and Safari - have a core rendering engine written in C++. This language choice was made because it affords the systems programmer complete control of the underlying hardware features and memory in use, and it provides a transparent...

Show 1 reference in code

Reenix: Implementing a Unix-Like Operating System in Rust

2015
1 reference

This paper describes the experience, problems and successes found in implementing a unix-like operating system kernel in rust. Using the basic design and much of the lowest-level support code from the Weenix operating system written for CS167/9 I was able to create a basic kernel supporting multiple...

Show 1 reference in code

Rust as a language for high performance GC implementation

Yi Lin, Stephen M. Blackburn, Antony L. Hosking, Michael Norrish
2018
1 reference

High performance garbage collectors build upon performance-critical low-level code, typically exhibit multiple levels of concurrency, and are prone to subtle bugs. Implementing, debugging and maintaining such collectors can therefore be extremely challenging. The choice of implementation language is...

Show 1 reference in code

Oxide: The Essence of Rust

Aaron Weiss, Olek Gierczak, Daniel Patterson, Amal Ahmed
2019
1 reference

Rust claims to advance industrial programming by bridging the gap between low-level systems programming and high-level application programming. At the heart of the argument that this enables programmers to build more reliable and efficient software is the borrow checker - a novel approach to ownersh...

Show 1 reference in code

MOLPIPx: an end-to-end differentiable package for permutationally invariant polynomials in Python and Rust

Manuel S. Drehwald, Asma Jamali, Rodrigo A. Vargas-Hernández
2024
1 reference

In this work, we present MOLPIPx, a versatile library designed to seamlessly integrate Permutationally Invariant Polynomials (PIPs) with modern machine learning frameworks, enabling the efficient development of linear models, neural networks, and Gaussian process models. These methodologies are wide...

Show 1 reference in code

Consistently faster and smaller compressed bitmaps with Roaring

Daniel Lemire, Gregory Ssi-Yan-Kai, Owen Kaser
2016
1 reference

Compressed bitmap indexes are used in databases and search engines. Many bitmap compression techniques have been proposed, almost all relying primarily on run-length encoding (RLE). However, on unsorted data, we can get superior performance with a hybrid compression technique that uses both uncompre...

Show 1 reference in code

SyRust: automatic testing of Rust libraries with semantic-aware program synthesis

Yoshiki Takashima, Ruben Martins, Limin Jia, C. Păsăreanu
2021
1 reference

Rust’s type system ensures the safety of Rust programs; however, programmers can side-step some of the strict typing rules by using the unsafe keyword. A common use of unsafe Rust is by libraries. Bugs in these libraries undermine the safety of the entire Rust program. Therefore, it is crucial to th...

Show 1 reference in code
Link copied to clipboard!