{'fraction_non_alphanumeric': 0.015429122468659595, 'fraction_numerical': 0.0057859209257473485, 'mean_word_length': 5.178571428571429, '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}}
Optimization of Ada '95 tasking constructs

The 1995 revision of the Ada programming language added several new features related to multitasking. These new features open up new implementation questions. In particular, it is appropriate to revisit the subject of compiler and runtime system optimization techniques for Ada multitasking. The existence of GNAT provides an opportunity to study these problems, as well as some more general and longer-standing questions. We study two areas of optimization. The first area is reduction in the number of operating system service calls. We concentrate on the use of different locking policies which control the degree of parallelism within the runtime system. The second area of optimization is to restrict the runtime system using the new pragma Restrictions. In particular, we produce a restricted RTS which excludes task abortion and the asynchronous transfer of control. Performance comparisons between different versions of GNARL are provided, and ways of managing them are also discussed.