Jump to content

Hamilton C shell

From Wikipedia, the free encyclopedia
Hamilton C shell
Original author(s)Nicole Hamilton
Initial releaseDecember 12, 1988;35 years ago(1988-12-12)
Stable release
5.2.g / March 5, 2017;7 years ago(2017-03-05)
Written inC
Operating systemWindows(historicallyOS/2)
TypeUnix ShellonWindows
LicenseCommercialproprietary software
Websitehamiltonlabs.com/Cshell.htm

Hamilton C shellis acloneof theUnix C shellandutilities[1][2]forMicrosoft Windowscreated by Nicole Hamilton[3]at Hamilton Laboratories as a completely original work, not based on any prior code. It was first released onOS/2on December 12, 1988[4][5][6][7][8][9]and onWindows NTin July 1992.[10][11][12]The OS/2 version was discontinued in 2003 but the Windows version continues to be actively supported.

Design

[edit]

Hamilton C shell differs from the Unix C shell in several respects. These include itscompilerarchitecture, its use ofthreads,and the decision to follow Windows rather than Unix conventions.[8][9]

Parser

[edit]
Hamilton C shell andCygwinbashonWindows 7,showing the use ofrecursionfor factoring.

The original C shell uses an ad hoc parser. This has led to complaints about its limitations. It works well enough for the kinds of things users type interactively but not very well for the more complex commands a user might take time to write in a script. It is not possible, for example, to pipe the output of aforeachstatement intogrep.There was a limit to how complex a command it could handle.[13]

By contrast, Hamilton uses a top-downrecursive descent parserthat allows it to compile statements to an internal form before running them.[1][8]As a result, statements can be nested or piped arbitrarily.[6]The language has also been extended with built-in and user-defined procedures, local variables, floating point and additional expression, editing and wildcarding operators, including an "indefinite directory" wildcard construct written as "..."that matches zero or more directory levels as required to make the rest of the pattern match.[14]

Threads

[edit]
Hamilton C shell andCygwinbashdate loops.

Lackingforkor a high performance way to recreate that functionality, Hamilton uses the Windowsthreadsfacilities instead.[6][8]When a new thread is created, it runs within the same process space and it shares all of the process state. If one thread changes the current directory or the contents of memory, it's changed for all the threads. It's much cheaper to create a thread than a process but there's no isolation between them. To recreate the missing isolation of separate processes, the threads cooperate to share resources usinglocks.[15]

Windows conventions

[edit]

Hamilton differs from other Unix shells in that it also directly supports Windows conventions fordrive letters,filename slashes,escape characters,etc.[9]

References

[edit]
  1. ^ab EarlyHamilton C shell Quick Reference(PDF).Hamilton Laboratories, Wayland, MA. Jul 10, 1990.RetrievedJuly 28,2016.
  2. ^ Faught, Danny (Aug 31, 1996)."The shell game".Software QA Magazine.3(4). Archived fromthe originalon March 1, 2012.RetrievedApr 8,2013.
  3. ^The author has discussed her transition from Douglas Hamilton on a panel discussion at Stanford, beginning at 29:37.Nicole Hamilton, Carl Ingram, Liz Kennedy Myers, Tom Mills, John Ordway, Scott Thatcher, Kirstie Wilde (Moderator) (Nov 28, 2007).Class of 1972 Panel Discussion: Hell No We Won't Go (Quietly Into the Night)!.Stanford Alumni Association, iTunes U.RetrievedJuly 28,2016.
  4. ^ Machlis, Sharon."Wayland writer for IBM"(PDF).Middlesex News(Dec 18 1988): 2E.RetrievedJuly 28,2016.
  5. ^ Sussman, Ann."Hamilton C Shell Speeds Development Of OS/2 Applications"(PDF).PC Week(Dec 26 1988 – Jan 2 1989): 37.RetrievedJuly 28,2016.
  6. ^abc Hamilton, Douglas A."Hamilton C shell Announcement"(PDF).IBM Personal Systems Developer(Summer 1989): 119–121.RetrievedJuly 28,2016.
  7. ^Richman, Scott (Jan 1991)."Examining the Hamilton C Shell"(PDF).Dr. Dobb's Journal.RetrievedJuly 28,2016.
  8. ^abcd Goutal, Kenneth G."The Hamilton C shell"(PDF).MIPS Magazine(Sep 1989).RetrievedJuly 28,2016.
  9. ^abc Yager, Tom."OS/2, Unix Style"(PDF).BYTE Magazine(Feb 1990).RetrievedJuly 28,2016.
  10. ^Hamilton C shell for Windows Release Notes 4.0,retrieved July 28, 2016.
  11. ^ Hamilton, Doug (Jul 27, 1995)."Looking for C-Shell on NT".Newsgroup:comp.os.ms-windows.nt.misc.Usenet:[email protected].RetrievedOct 8,2010.
  12. ^ Deignan, Michael P. (March 31, 1998)."Hamilton C Shell".Windows IT Pro.RetrievedSeptember 22,2019.
  13. ^Csh Programming Considered Harmfulby Tom Christiansen
  14. ^ "Wildcarding and pattern matching".Hamilton Laboratories.RetrievedAugust 13,2018.
  15. ^ Hamilton, Doug (Apr 21, 1995)."Suggestions for multiple-reader/single-writer lock?".Newsgroup:comp.os.ms-windows.nt.misc.Usenet:[email protected].RetrievedJuly 28,2016.
[edit]