{'fraction_non_alphanumeric': 0.018158236057068743, 'fraction_numerical': 0.0, 'mean_word_length': 5.380165289256198, '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}}
Automatic array property detection via static analysis

Simultaneous use of multiple programming languages aids in creating efficient modern programs in the face of legacy code; however, creating language bindings to low-level languages like C by hand is tedious and error prone. We offer an automated suite of analyses to enhance the quality of automatically produced bindings by recovering high-level array type information missing in C's type system. We emit annotations in the style of GObjectIntrospection, which produces bindings from annotations. We annotate an array argument as terminated by a special sentinel value, fixed length of a constant size, or of length determined by another argument. This information helps produce more idiomatic, efficient bindings.