skip to main content
10.1145/3328433.3328444acmotherconferencesArticle/Chapter ViewAbstractPublication PagesprogrammingConference Proceedingsconference-collections
short-paper

A shell-like model for general purpose programming

Published: 01 April 2019 Publication History

Abstract

Shell scripting languages such as bash are designed to integrate with an OS, which mainly involves managing processes with implicit input and output streams. They also attempt to do this in a compact way that could be reasonably typed on a command-line interface.
However, existing shell languages are not sufficient to serve as general-purpose languages---values are not observable except in raw streams of bytes, and they lack modern language features such as lexical scope and higher-order functions.
By way of a new programming language, Magritte, we propose a general-purpose programming language with semantics similar to bash. In this paper, we discuss the early design of such a system, in which the primary unit of composition, like bash, is processes with input and output channels, which can be read from or written to at any time, and which can be chained together via a pipe operator. We also explore concurrency semantics for such a language.

References

[1]
Tom Duff. 1990. RC---a Shell for Plan 9 and UNIX. In UNIX Vol. II, A. G. Hume and M. D. McIlroy (Eds.). W. B. Saunders Company, Philadelphia, PA, USA, 283--296.
[2]
Noah Paul Evans and Eric Van Hensbergen. 2009. Brief Announcement: PUSH, a DISC Shell. In Proceedings of the 28th ACM Symposium on Principles of Distributed Computing (PODC '09). ACM, New York, NY, USA, 306--307.
[3]
Robert Griesemer, Rob Pike, and Ken Thompson. 2018. The Go Programming Language. Retrieved Dec 2018 from http://golang.org/.
[4]
Paul Haahr and Byron Rakitzis. 1993. Es: A shell with higher-order functions. In Proceedings of the USENIX Winter 1993 Conference Proceedings on USENIX Winter 1993 Conference Proceedings (USENIX'93). USENIX Association, Berkeley, CA, USA, 53--62.
[5]
Richard Hickey. 2008. The Clojure Programming Language. In Proceedings of the 2008 Symposium on Dynamic Languages. ACM, New York, NY, USA.
[6]
Hiroaki Inoue, Tomoyuki Aotani, and Atsushi Igarashi. 2018. ContextWorkflow: A Monadic DSL for Compensable and Interruptible Executions. In 32nd European Conference on Object-Oriented Programming (ECOOP 2018) (Leibniz International Proceedings in Informatics (LIPIcs)), Todd Millstein (Ed.), Vol. 109. Schloss Dagstuhl-Leibniz-Zentrum fuer Informatik, Dagstuhl, Germany, 2:1--2:33.
[7]
Linux man-pages Project. 2018. pipe(7) Linux User's Manual (4.16 ed.). The Linux Foundation, https://www.kernel.org/doc/man-pages/.
[8]
Microsoft. 2018. PowerShell Documentation. Retrieved Dec 2018 from https://docs.microsoft.com/en-us/powershell/.
[9]
John K. Ousterhout. 1989. Tcl: An Embeddable Command Language. Technical Report. Berkeley, CA, USA.
[10]
Matt Russell. 2018. Mash: An object shell for UNIX. Retrieved Dec 2018 from http://mash-shell.org/.
[11]
Anthony Scopatz. 2018. The Xonsh Shell. Retrieved Dec 2018 from https://xon.sh/.
[12]
The GNU Project. 2018. The Guile Programming Language. Retreived Dec 2018 from http://gnu.org/s/guile.

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Other conferences
Programming '19: Companion Proceedings of the 3rd International Conference on the Art, Science, and Engineering of Programming
April 2019
201 pages
ISBN:9781450362573
DOI:10.1145/3328433
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee 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 the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 01 April 2019

Permissions

Request permissions for this article.

Check for updates

Qualifiers

  • Short-paper

Conference

Programming '19

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • 0
    Total Citations
  • 66
    Total Downloads
  • Downloads (Last 12 months)2
  • Downloads (Last 6 weeks)1
Reflects downloads up to 07 Mar 2025

Other Metrics

Citations

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media