PL

Featured Works

We're always cooking up useful open source software in our labs. Here are a few of our most prominent works from recent times.

bhnd(4)

Contributed to FreeBSD, the bhnd(4) driver family provides platform support for both SoCs and Wi-Fi devices from Broadcom's Home Networking Division.

PLCrashReporter

Provides an in-process live crash reporting framework for use on both iOS and macOS. Crash reports are output as protobuf-encoded messages, and may be decoded using the CrashReporter library or any Google Protobuf decoder.

PLRelational

A data storage, processing, and presentation framework based on relational algebra and written in Swift. The core PLRelational framework allows for declaratively expressing relationships and observing deltas when data is changed. The companion PLRelationalBinding framework sits on top and enables an approach we call “reactive relational programming” that can greatly simplify UI development.

PLDatabase

An SQL database access library for Objective-C, initially focused on SQLite as an application database. The library supports macOS, iOS, and Windows (via Cocotron).

Older Objective-C Things

Some cool Objective-C projects we built a while back. Still loved and not entirely forgotten!

PLBlocks

Implements runtime and compiler support for C and Objective-C Blocks on Mac OS X 10.5 and iPhone OS 3.0. PLBlocks is based entirely on Apple’s block runtime and compiler additions for Snow Leopard.

PLWeakCompatibility

Enables the use of __weak with ARC on Mac OS X 10.6 and iOS 4. Add one .m file to your project, add two compiler flags, and happily use __weak while keeping compatibility with earlier OSes.

PLActorKit

An Objective-C implementation of asynchronous inter-thread message passing to facilitate the implementation of concurrent software on both the desktop (macOS) and embedded devices (iOS).

PLBlockIMP

Provides an open-source implementation of imp_implementationWithBlock(), using vm_remap()-based trampolines.

PLPatchMaster

Provides an easy-to-use block-based swizzling API, using the block trampoline library provided by PLBlockIMP, and a set of custom assembly trampolines for ARMv7, ARMv7s, ARM64, and x86-64.

Rust-y Things

We spend much of our time with Swift and Objective-C, but our expertise doesn't end there. We've built significant libraries in other languages — Java, Scala, C++, the list goes on — and now we can add the Rust programming language to that list. Here are a few Rust libraries that have emerged from our R&D efforts.

rcodec

A Rust library that provides combinators for purely functional, declarative encoding and decoding of binary data. Its design is largely derived from that of the scodec library for Scala.

hlist-rs

Provides support for heterogeneous lists (known as HLists) in Rust. An HList is a functional, tuple-like, strongly-typed data structure that can contain elements of differing types.

lens-rs

Another Rust library that offers up lenses, which are a mechanism in functional programming for focusing on a part of a complex data structure.