{'fraction_non_alphanumeric': 0.030249110320284697, 'fraction_numerical': 0.0400355871886121, 'mean_word_length': 5.2154696132596685, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
The Plaid Language: Typed Core Specification (CMU-ISR-12-103)

Plaid is an object oriented programming language built on two paradigms. First, Plaid is typestateoriented. Programmers can directly encode the abstract states of objects and use the state change operator to change the state, interface, and representation of an object at runtime. Second, Plaid’s type system is permission-based. The type of each reference includes an access permission which dictates how the reference can be used and characterizes the permissions to other aliases of the same object. Plaid leverages permissions when tracking the abstract state of references during typechecking. Permissions are also used to infer code that can be safely run in parallel. This document defines the core of the Plaid language, including its source syntax, the semantics of operations involving abstract states, and a type system. This research was supported by DARPA grant HR00110710019, CMU|Portugal Aeminium grant CMUPT/SE/0038/2008, NSF grants CCF-0811592 and CCF-1116907, and grant #1019343 to the Computing Research Association for the CIFellows Project.