{'fraction_non_alphanumeric': 0.01373825018076645, 'fraction_numerical': 0.0, 'mean_word_length': 6.061224489795919, '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 parallelization of object-oriented programming languages using tuple space

Techniques and tools are presented for automatically generating parallelizing compilers for object-oriented programming languages from denotational semantics specifications. The denotational semantics of object-oriented programming languages are used to derive the control and data dependencies that exist within programs and this information may then be used to produce parallel object code in a compiler. Using formal semantics has the potential for exposing more concurrency in programs than can be detected by non-semantics-based methods. Furthermore, since compilers may be automatically generated from denotational semantics specifications, the implementation of these parallelization techniques will be automatic and hence language independent. Our work concentrates on the object-oriented programming language model since this model provides very natural concurrency in its semantics. To test our theories, we have developed a denotational semantics of the CORAL object-oriented programming language, and produce a parallelizing compiler for this source language which generates parallel code in the form of tuple space primitives running on a distributed network of processors. The result is a language implementation which realizes fully transparent parallel object-oriented programming.