POSIX Abstractions in Modern Operating Systems: the Old, the New, and the Missing

Total Page:16

File Type:pdf, Size:1020Kb

POSIX Abstractions in Modern Operating Systems: the Old, the New, and the Missing POSIX Abstractions in Modern Operating Systems: The Old, the New, and the Missing Vaggelis Atlidakis, Jeremy Andrus, Roxana Geambasu, Dimitris Mitropoulos, and Jason Nieh fvatlidak, jeremya, roxana, dimitro, [email protected] Columbia University code atop the same rough abstractions, and educators can Abstract teach widely applicable abstractions in their OS courses. Since its creation over 25 years ago, POSIX has evolved The POSIX standard, developed 25 years ago, comprises to some extent (e.g., the most recent update was published in a set of operating system (OS) abstractions that aid appli- 2013 [55]), but the changes have been small overall. Mean- cation portability across UNIX-based OSes. While OSes while, applications and the computing platforms they run on and applications have evolved tremendously over the last have changed dramatically: Modern applications for today’s 25 years, POSIX, and the basic set of abstractions it pro- smartphones, desktop PCs, and tablets, interact with multi- vides, has remained largely unchanged. Little has been done ple layers of software frameworks and libraries implemented to measure how and to what extent traditional POSIX ab- atop the OS. Although POSIX continues to serve as the sin- stractions are being used in modern OSes, and whether new gle standardized interface between these software frame- abstractions are taking form, dethroning traditional ones. We works and the OS, little has been done to measure whether explore these questions through a study of POSIX usage POSIX abstractions are effective in supporting modern ap- in modern desktop and mobile OSes: Android, OS X, and plication workloads, or whether new, non-standard abstrac- Ubuntu. Our results show that new abstractions are taking tions are taking form, dethroning traditional ones. Such form, replacing several prominent traditional abstractions in measurements can be valuable to developers, educators, re- POSIX. While the changes are driven by common needs and searchers, and standards bodies alike, who can adapt their are conceptually similar across the three OSes, they are not applications, teachings, and optimization and standardiza- converging on any new standard, increasing fragmentation. tion efforts toward the new or changed abstractions. 1. Introduction We present the first study of POSIX usage in modern The Portable Operating System Interface (POSIX) is the OSes focusing on three of today’s most widely used mobile IEEE standard operating system (OS) service interface for and desktop OSes – Android, OS X, and Ubuntu – and UNIX-based systems. It describes a set of fundamental ab- popular consumer applications characteristic to these OSes. stractions needed for efficient construction of applications. We built a utility, called libtrack, that supports both dynamic Born out of work in the early 1980s, when the fragmentation and static analyses of POSIX use in applications. Dynamic of UNIX was of concern, it was created to enable applica- analyses give us detailed and precise POSIX usage patterns, tion developers to easily write application source code that but can only be run at limited scale (e.g., tens of popular would be portable across multiple diverse OSes. While per- applications for each OS). Static analyses let us generalize fect portability was never a reality, the level of uniformity trends at large scale (e.g., 1.1M applications in our Android added by POSIX has been valuable both for application de- study), but conclusions are not as precise. Our study sheds velopers and for educators alike. Application developers can light into a number of important questions regarding the use of POSIX abstractions in modern OSes, including: which abstractions work well; which appear to be used in ways for Permission to make digital or hard copies of part or all of this work for personal or classroom use is granted without fee which they were never intended; which are being replaced by provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. new and non-standard abstractions; and whether the standard Abstracting with credit is permitted. To copy otherwise, to republish, to post on servers, or to redistribute to lists, contact the Owner/Author(s). Request permissions from [email protected] or Publications Dept., ACM, Inc., fax +1 (212) is missing any fundamental abstractions needed by modern 869-0481. workloads. Our findings can be summarized as follows: EuroSys ’16, April 18–21, 2016, London, United Kingdom Copyright c 2016 held by owner/author(s). Publication rights licensed to ACM. First, usage is driven by high-level frameworks, which ACM 978-1-4503-4240-7/16/04. $15.00 DOI: http://dx.doi.org/10.1145/2901318.2901350 impacts POSIX’s portability goals. The original goal of the POSIX standard was application source code portability. This paper is organized as follows. Section2 presents two However, modern applications are no longer being writ- motivating examples for our study and formulates our goals. ten to standardized POSIX interfaces. Instead, they rely Sections3 and4 give background and detail our study’s on platform-specific frameworks and libraries that lever- methodology. Section5 presents our measurement results. age high-level abstractions for inter-process communication Sections6 and7 discuss the broader implications of our (IPC), thread pool management, relational databases, and findings in the context of related work and in general. graphics support. These frameworks and libraries are of- ten implemented using underlying standard POSIX APIs, 2. Motivation but are also free to depart from POSIX and use OS-specific interfaces. Thus, instead of the POSIX API serving as the Motivating Examples. Our measurement study is motivated interface between applications and the OS environment, by our experience building two very different systems – modern OSes – such as Ubuntu, Android, and OS X– pro- an Android data protection system called Pebbles [52] and vide a more layered programming model with “taller” in- an Android/iOS binary compatibility system, called Cycada terfaces. Applications directly link against high-level frame- (formerly known as Cider)[7] – whose designs exposed, and works, which invoke other frameworks and libraries that were drastically impacted by, the changes in the ways appli- may eventually utilize POSIX. This new, layered program- cations on these platforms are using system abstractions. ming model imposes challenges with respect to applica- • Pebbles [52] provides data protection at the level of tion portability, and has given rise to many different cross- application-level objects, such as emails or bank accounts. platform SDKs [2,9, 22, 24, 39] that attempt to fill the gap This level of protection is made possible by the new ways in left by a standard which has not evolved with the rest of which Android applications use storage abstractions. Rather the ecosystem. However, these cross-platform SDKs are of- than using traditional unstructured POSIX file system ab- ten challenging to develop and maintain up-to-date with OS stractions, Android applications instead store data almost changes. exclusively in highly structured storage (SQLite). In Peb- Second, extension APIs, namely ioctl, dominate mod- bles, we leverage this structured information to transparently ern POSIX usage patterns as OS developers resort to them and accurately reconstruct application-level objects so the to build support for abstractions missing from the POSIX OS can provide protection at their level. Without applica- standard. Extension APIs have become the standard way tions’ almost exclusive reliance on structured storage, Peb- for developers to circumvent POSIX limitations and facili- bles would likely not be possible. tate hardware-supported, high-level functionality for graph- • Cycada [7] is a binary compatibility framework for An- ics, sound, and IPC. For example, the ioctl interface is now droid and iOS applications. Given that both Android and regularly used to mediate complex graphics commands be- iOS implement similar POSIX functionality, we initially tween the high-level OpenGL library and the graphics driver. thought that building Cycada would be relatively straight- Third, new abstractions are arising driven by the same forward compared to previous Windows-UNIX compatibil- POSIX limitations across the three OSes, but the new ab- ity efforts. However, achieving compatibility even between stractions are not converging. To deal with abstractions Android and iOS turned out to be a herculean task. A main missing from the aging POSIX standard, modern OSes are obstacle was the extensive use of POSIX’s ioctl exten- implementing new abstractions to support higher-level ap- sion API, which is highly platform-specific and loosely de- plication functionality. Although these interfaces and ab- fined. To address this challenge, we elevated the level of stractions are driven by similar POSIX limitations and are abstraction at which we constructed binary compatibility conceptually similar across OSes, they are not converging from POSIX to newer, high-level abstractions used by ap- on any new standard. Traditional POSIX threading models, plications, such as graphics and sound libraries. With this IPC interfaces, and file system access are being replaced by approach, and intuitively assuming that most applications platform and vendor-specific APIs and
Recommended publications
  • Technical Standard
    Technical Standard X/Open Curses, Issue 7 The Open Group ©November 2009, The Open Group All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by any means, electronic, mechanical, photocopying, recording or otherwise, without the prior permission of the copyright owners. Technical Standard X/Open Curses, Issue 7 ISBN: 1-931624-83-6 Document Number: C094 Published in the U.K. by The Open Group, November 2009. This standardhas been prepared by The Open Group Base Working Group. Feedback relating to the material contained within this standardmay be submitted by using the web site at http://austingroupbugs.net with the Project field set to "Xcurses Issue 7". ii Technical Standard 2009 Contents Chapter 1 Introduction........................................................................................... 1 1.1 This Document ........................................................................................ 1 1.1.1 Relationship to Previous Issues ......................................................... 1 1.1.2 Features Introduced in Issue 7 ........................................................... 2 1.1.3 Features Withdrawn in Issue 7........................................................... 2 1.1.4 Features Introduced in Issue 4 ........................................................... 2 1.2 Conformance............................................................................................ 3 1.2.1 Base Curses Conformance .................................................................
    [Show full text]
  • Configuring DNS
    Configuring DNS The Domain Name System (DNS) is a distributed database in which you can map hostnames to IP addresses through the DNS protocol from a DNS server. Each unique IP address can have an associated hostname. The Cisco IOS software maintains a cache of hostname-to-address mappings for use by the connect, telnet, and ping EXEC commands, and related Telnet support operations. This cache speeds the process of converting names to addresses. Note You can specify IPv4 and IPv6 addresses while performing various tasks in this feature. The resource record type AAAA is used to map a domain name to an IPv6 address. The IP6.ARPA domain is defined to look up a record given an IPv6 address. • Finding Feature Information, page 1 • Prerequisites for Configuring DNS, page 2 • Information About DNS, page 2 • How to Configure DNS, page 4 • Configuration Examples for DNS, page 13 • Additional References, page 14 • Feature Information for DNS, page 15 Finding Feature Information Your software release may not support all the features documented in this module. For the latest caveats and feature information, see Bug Search Tool and the release notes for your platform and software release. To find information about the features documented in this module, and to see a list of the releases in which each feature is supported, see the feature information table at the end of this module. Use Cisco Feature Navigator to find information about platform support and Cisco software image support. To access Cisco Feature Navigator, go to www.cisco.com/go/cfn. An account on Cisco.com is not required.
    [Show full text]
  • Testing-Prepare.Pdf
    Prepare Update your system so you can connect to the staging server to perform testing – required for all users EXCEPT “new users.” If you are not certain how to complete the steps listed in Prepare, you should abort testing efforts. Breaking your “hosts” file may prevent applications that use the Internet, such as your Web browser, from functioning properly. Also note that this will make non-CMS www.ndsu.edu sites unavailable while you are testing until you perform the clean-up steps on page 11 of this packet. Windows XP 1. Close all browser windows 2. Open My Computer 3. Browse to Local Disk (C:) > WINDOWS > system32 > drivers > etc 4. Double-click hosts 5. In the Open With dialog window, select Notepad and click OK 6. At the end of the file, AFTER 127.0.0.1 localhost, add a new line with the following entry 134.129.111.243 www.ndsu.edu workspaces.ndsu.edu An example of what the file should look like follows these directions Note that if you usually sign in somewhere other than “workspaces.ndsu.edu” you should add that address to the end of this list, for example like 134.129.111.243 www.ndsu.edu workspaces.ndsu.edu english.ndsu.edu 7. Save the file Remember to complete the clean-up steps on page 11 of this packet when you are done testing Windows Vista 1. Close all browser windows 2. Click the Start menu > All Programs > Accessories > and RIGHT-CLICK Notepad 3. Choose Run as administrator 4. In the User Account Control dialog, click Continue or if you are not an administrator, provide a password for an administrator account and click OK 5.
    [Show full text]
  • Javascript and the DOM
    Javascript and the DOM 1 Introduzione alla programmazione web – Marco Ronchetti 2020 – Università di Trento The web architecture with smart browser The web programmer also writes Programs which run on the browser. Which language? Javascript! HTTP Get + params File System Smart browser Server httpd Cgi-bin Internet Query SQL Client process DB Data Evolution 3: execute code also on client! (How ?) Javascript and the DOM 1- Adding dynamic behaviour to HTML 3 Introduzione alla programmazione web – Marco Ronchetti 2020 – Università di Trento Example 1: onmouseover, onmouseout <!DOCTYPE html> <html> <head> <title>Dynamic behaviour</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body> <div onmouseover="this.style.color = 'red'" onmouseout="this.style.color = 'green'"> I can change my colour!</div> </body> </html> JAVASCRIPT The dynamic behaviour is on the client side! (The file can be loaded locally) <body> <div Example 2: onmouseover, onmouseout onmouseover="this.style.background='orange'; this.style.color = 'blue';" onmouseout=" this.innerText='and my text and position too!'; this.style.position='absolute'; this.style.left='100px’; this.style.top='150px'; this.style.borderStyle='ridge'; this.style.borderColor='blue'; this.style.fontSize='24pt';"> I can change my colour... </div> </body > JavaScript is event-based UiEvents: These event objects iherits the properties of the UiEvent: • The FocusEvent • The InputEvent • The KeyboardEvent • The MouseEvent • The TouchEvent • The WheelEvent See https://www.w3schools.com/jsref/obj_uievent.asp Test and Gym JAVASCRIPT HTML HEAD HTML BODY CSS https://www.jdoodle.com/html-css-javascript-online-editor/ Javascript and the DOM 2- Introduction to the language 8 Introduzione alla programmazione web – Marco Ronchetti 2020 – Università di Trento JavaScript History • JavaScript was born as Mocha, then “LiveScript” at the beginning of the 94’s.
    [Show full text]
  • With ANSIBLE Sessions
    SANOG32 bdNOG9 02-10 August, 2018 Dhaka, Bangladesh NETWORK Imtiaz Rahman AUTOMATION (NetDevOps) SBAC Bank Limited [email protected] https://imtiazrahman.com with ANSIBLE Sessions • Session 1: o 14:30 PM – 16:00 PM (Theory with example) • Session 2: o 16:30 PM – 18:00 PM (Configuration and hands on LAB) Today’s Talk 1. Devops/NetDevOps ? 6. Ansible Language Basics 2. Why automation ? 7. Ansible encryption decryption 3. Tools for automation 8. How to run 4. Why Ansible ? 9. Demo 5. Ansible introduction 10. Configuration & Hands on LAB DevOps >devops ? DevOps >devops != DevOps DevOps integrates developers and operations teams In order to improve collaboration and productivity by automating infrastructure, automating workflows and continuously measuring application performance Dev + Ops = DevOps NetDevOps NetDevOps = Networking + DevOps infrastructure as code Why automation ? Avoid Avoid repeated Faster Identical typographical task deployment configuration error (Typos) Tools for automation What is ANSIBLE? • Open source IT automation tool • Red hat Enterprise Linux, CentOS, Debian, OS X, Ubuntu etc. • Need python Why ANSIBLE? • Simple • Push model • Agentless Why ANSIBLE? Puppet SSL Puppet Puppet master Client/agent Ansible Agentless Controller SSH node Managed with ansible node’s How it works 1 2 3 4 Run playbook SSH SSH Laptop/Desktop/ Copy python Run Module Delete Module Server module on device from device Return result 5 What can be done?? • Configuration Management • Provisioning VMs or IaaS instances • Software Testing • Continuous
    [Show full text]
  • MSD FATFS Users Guide
    Freescale MSD FATFS Users Guide Document Number: MSDFATFSUG Rev. 0 02/2011 How to Reach Us: Home Page: www.freescale.com E-mail: [email protected] USA/Europe or Locations Not Listed: Freescale Semiconductor Technical Information Center, CH370 1300 N. Alma School Road Chandler, Arizona 85224 +1-800-521-6274 or +1-480-768-2130 [email protected] Europe, Middle East, and Africa: Information in this document is provided solely to enable system and Freescale Halbleiter Deutschland GmbH software implementers to use Freescale Semiconductor products. There are Technical Information Center no express or implied copyright licenses granted hereunder to design or Schatzbogen 7 fabricate any integrated circuits or integrated circuits based on the 81829 Muenchen, Germany information in this document. +44 1296 380 456 (English) +46 8 52200080 (English) Freescale Semiconductor reserves the right to make changes without further +49 89 92103 559 (German) notice to any products herein. Freescale Semiconductor makes no warranty, +33 1 69 35 48 48 (French) representation or guarantee regarding the suitability of its products for any particular purpose, nor does Freescale Semiconductor assume any liability [email protected] arising out of the application or use of any product or circuit, and specifically disclaims any and all liability, including without limitation consequential or Japan: incidental damages. “Typical” parameters that may be provided in Freescale Freescale Semiconductor Japan Ltd. Semiconductor data sheets and/or specifications can and do vary in different Headquarters applications and actual performance may vary over time. All operating ARCO Tower 15F parameters, including “Typicals”, must be validated for each customer 1-8-1, Shimo-Meguro, Meguro-ku, application by customer’s technical experts.
    [Show full text]
  • Cisco IOS Easy IP
    WHITE PAPER Cisco IOS Easy IP Summary • Conserve registered IP addresses Cisco IOS Easy IP enables transparent and dynamic IP • Maximize IP address manageability address allocation for hosts in remote environments via Remote networks have variable numbers of end systems that DHCP, reduces router configuration tasks via dynamic PPP/ need access to the Internet. Hence, ISPs are interested in IPCP address negotiation, conserves IP addresses via PAT, allocating just one IP address to each remote LAN. and minimizes Internet access costs for remote offices. In enterprise networks where telecommuter populations Cisco IOS Easy IP is a combination of the following are growing extremely fast, network administrators need functionality: solutions that ease configuration and management of remote • Port Address Translation (PAT), a subset of Network routers and provide conservation and dynamic allocation of Address Translation (NAT) IP addresses within their networks. Such solutions are • Dynamic PPP/IPCP WAN interface IP address negotiation especially important when network administrators • Cisco IOS DHCP Server implement large dialup user pools where ISDN plays a major This paper describes the features and benefits of Cisco IOS role. Easy IP, provides a technical discussion of how it works, As part of Cisco IOS software, the premier platform that including details on the Cisco IOS DHCP Server, and includes delivers network services and enables networked availability, packaging, and platform support information. applications, Cisco IOS Easy IP is a scalability/connectivity service that provides solutions for each of these challenges. It Introduction provides cost savings, scalability, conservation of registered Exponential growth in the remote access router market has IP addresses, and eases router deployment by nontechnical created new challenges for Internet service providers (ISPs) users.
    [Show full text]
  • OSLC Architecture Management Specification 3.0 Project Specification Draft 01 17 September 2020
    Standards Track Work Product OSLC Architecture Management Specification 3.0 Project Specification Draft 01 17 September 2020 This stage: https://docs.oasis-open-projects.org/oslc-op/am/v3.0/psd01/architecture-management-spec.html (Authoritative) https://docs.oasis-open-projects.org/oslc-op/am/v3.0/psd01/architecture-management-spec.pdf Previous stage: N/A Latest stage: https://docs.oasis-open-projects.org/oslc-op/am/v3.0/architecture-management-spec.html (Authoritative) https://docs.oasis-open-projects.org/oslc-op/am/v3.0/architecture-management-spec.pdf Latest version: https://open-services.net/spec/am/latest Latest editor's draft: https://open-services.net/spec/am/latest-draft Open Project: OASIS Open Services for Lifecycle Collaboration (OSLC) OP Project Chairs: Jim Amsden ([email protected]), IBM Andrii Berezovskyi ([email protected]), KTH Editor: Jim Amsden ([email protected]), IBM Additional components: This specification is one component of a Work Product that also includes: OSLC Architecture Management Version 3.0. Part 1: Specification (this document). architecture-management- spec.html OSLC Architecture Management Version 3.0. Part 2: Vocabulary. architecture-management-vocab.html OSLC Architecture Management Version 3.0. Part 3: Constraints. architecture-management-shapes.html OSLC Architecture Management Version 3.0. Machine Readable Vocabulary Terms. architecture-management- vocab.ttl OSLC Architecture Management Version 3.0. Machine Readable Constraints. architecture-management-shapes.ttl architecture-management-spec Copyright © OASIS Open 2020. All Rights Reserved. 17 September 2020 - Page 1 of 19 Standards Track Work Product Related work: This specification is related to: OSLC Architecture Management Specification Version 2.0.
    [Show full text]
  • Synchronizing Threads with POSIX Semaphores
    3/17/2016 POSIX Semaphores Synchronizing Threads with POSIX Semaphores 1. Why semaphores? 2. Posix semaphores are easy to use sem_init sem_wait sem_post sem_getvalue sem_destroy 3. Activities 1 2 Now it is time to take a look at some code that does something a little unexpected. The program badcnt.c creates two new threads, both of which increment a global variable called cnt exactly NITER, with NITER = 1,000,000. But the program produces unexpected results. Activity 1. Create a directory called posixsem in your class Unix directory. Download in this directory the code badcnt.c and compile it using gcc badcnt.c -o badcnt -lpthread Run the executable badcnt and observe the ouput. Try it on both tanner and felix. Quite unexpected! Since cnt starts at 0, and both threads increment it NITER times, we should see cnt equal to 2*NITER at the end of the program. What happens? Threads can greatly simplify writing elegant and efficient programs. However, there are problems when multiple threads share a common address space, like the variable cnt in our earlier example. To understand what might happen, let us analyze this simple piece of code: THREAD 1 THREAD 2 a = data; b = data; a++; b--; data = a; data = b; Now if this code is executed serially (for instance, THREAD 1 first and then THREAD 2), there are no problems. However threads execute in an arbitrary order, so consider the following situation: Thread 1 Thread 2 data a = data; --- 0 a = a+1; --- 0 --- b = data; // 0 0 --- b = b + 1; 0 data = a; // 1 --- 1 --- data = b; // 1 1 So data could end up +1, 0, -1, and there is NO WAY to know which value! It is completely non- deterministic! http://www.csc.villanova.edu/~mdamian/threads/posixsem.html 1/4 3/17/2016 POSIX Semaphores The solution to this is to provide functions that will block a thread if another thread is accessing data that it is using.
    [Show full text]
  • Towards the Second Edition of ISO 24707 Common Logic
    Towards the Second Edition of ISO 24707 Common Logic Michael Gr¨uninger(with Tara Athan and Fabian Neuhaus) Miniseries on Ontologies, Rules, and Logic Programming for Reasoning and Applications January 9, 2014 Gr¨uninger ( Ontolog Forum) Common Logic (ISO 24707) January 9, 2014 1 / 20 What Is Common Logic? Common Logic (published as \ISO/IEC 24707:2007 | Information technology Common Logic : a framework for a family of logic-based languages") is a language based on first-order logic, but extending it in several ways that ease the formulation of complex ontologies that are definable in first-order logic. Gr¨uninger ( Ontolog Forum) Common Logic (ISO 24707) January 9, 2014 2 / 20 Semantics An interpretation I consists of a set URI , the universe of reference a set UDI , the universe of discourse, such that I UDI 6= ;; I UDI ⊆ URI ; a mapping intI : V ! URI ; ∗ a mapping relI from URI to subsets of UDI . Gr¨uninger ( Ontolog Forum) Common Logic (ISO 24707) January 9, 2014 3 / 20 How Is Common Logic Being Used? Open Ontology Repositories COLORE (Common Logic Ontology Repository) colore.oor.net stl.mie.utoronto.ca/colore/ontologies.html OntoHub www.ontohub.org https://github.com/ontohub/ontohub Gr¨uninger ( Ontolog Forum) Common Logic (ISO 24707) January 9, 2014 4 / 20 How Is Common Logic Being Used? Ontology-based Standards Process Specification Language (ISO 18629) Date-Time Vocabulary (OMG) Foundational UML (OMG) Semantic Web Services Framework (W3C) OntoIOp (ISO WD 17347) Gr¨uninger ( Ontolog Forum) Common Logic (ISO 24707) January 9, 2014
    [Show full text]
  • APL Literature Review
    APL Literature Review Roy E. Lowrance February 22, 2009 Contents 1 Falkoff and Iverson-1968: APL1 3 2 IBM-1994: APL2 8 2.1 APL2 Highlights . 8 2.2 APL2 Primitive Functions . 12 2.3 APL2 Operators . 18 2.4 APL2 Concurrency Features . 19 3 Dyalog-2008: Dyalog APL 20 4 Iverson-1987: Iverson's Dictionary for APL 21 5 APL Implementations 21 5.1 Saal and Weiss-1975: Static Analysis of APL1 Programs . 21 5.2 Breed and Lathwell-1968: Implementation of the Original APLn360 25 5.3 Falkoff and Orth-1979: A BNF Grammar for APL1 . 26 5.4 Girardo and Rollin-1987: Parsing APL with Yacc . 27 5.5 Tavera and other-1987, 1998: IL . 27 5.6 Brown-1995: Rationale for APL2 Syntax . 29 5.7 Abrams-1970: An APL Machine . 30 5.8 Guibas and Wyatt-1978: Optimizing Interpretation . 31 5.9 Weiss and Saal-1981: APL Syntax Analysis . 32 5.10 Weigang-1985: STSC's APL Compiler . 33 5.11 Ching-1986: APL/370 Compiler . 33 5.12 Ching and other-1989: APL370 Prototype Compiler . 34 5.13 Driscoll and Orth-1986: Compile APL2 to FORTRAN . 35 5.14 Grelck-1999: Compile APL to Single Assignment C . 36 6 Imbed APL in Other Languages 36 6.1 Burchfield and Lipovaca-2002: APL Arrays in Java . 36 7 Extensions to APL 37 7.1 Brown and Others-2000: Object-Oriented APL . 37 1 8 APL on Parallel Computers 38 8.1 Willhoft-1991: Most APL2 Primitives Can Be Parallelized . 38 8.2 Bernecky-1993: APL Can Be Parallelized .
    [Show full text]
  • Openextensions POSIX Conformance Document
    z/VM Version 7 Release 1 OpenExtensions POSIX Conformance Document IBM GC24-6298-00 Note: Before you use this information and the product it supports, read the information in “Notices” on page 73. This edition applies to version 7, release 1, modification 0 of IBM z/VM (product number 5741-A09) and to all subsequent releases and modifications until otherwise indicated in new editions. Last updated: 2018-09-12 © Copyright International Business Machines Corporation 1993, 2018. US Government Users Restricted Rights – Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. Contents List of Tables........................................................................................................ ix About This Document............................................................................................xi Intended Audience......................................................................................................................................xi Conventions Used in This Document.......................................................................................................... xi Where to Find More Information.................................................................................................................xi Links to Other Documents and Websites.............................................................................................. xi How to Send Your Comments to IBM....................................................................xiii Summary of Changes for z/VM
    [Show full text]