CERN Accelerating science

This website is no longer maintained. Its content may be obsolete. Please visit for current CERN information.

CERN home pageCERN home pageDocuments by ReferenceDocuments by ReferenceCNLsCNLsYear 2001Year 2001Help, Info about this page


Editorial Information
If you need help
Announcements Physics Computing Desktop Computing Internet Services and Network Scientific Applications and Software Engineering Desktop Publishing The Learning Zone User Documentation Just For Fun ...
Previous:Programming Languages over the Years
Next:The Design and Implementation of Large Packages: Hbook, GEANT3, PAW, ROOT
 (See printing version)

A Brief History of Cernlib (1966-???)

Ian Mclaren , IT/API


Past, evolution and future for CERNLIB.

Sixties (the beginning)

Although there is no mention of the Cern Program Library in CNL 1, the first recorded submissions of kernlib and mathlib routines were in the same year, 1966. At that time, the Computer Centre had CDC 60-bit computers and the first library routines were of a mathematical nature. The Physics specific programs were developed by their users in the Track Chamber (TC) Division, including the first version of PATCHY, also in 1966. The following year saw the birth of MINUIT. During the last years of the sixties, many additions were made to both libraries, until in 1969 the administration of the TC library was merged with the DD Cern Program Library, and PATCHY3 and its manual were released.

Seventies (CDC era)

The CDC era continued well into the seventies and more famous projects were born, GEANT3 and HBOOK in 1974 with HPLOT following in 1976, based on one of the first device independent graphics packages, GD3, which was also developed in DD Division. The average rate of new submissions continued at about 8/year, mostly written in Fortran but increasingly also in Compass, the CDC assembly language, to improve performance. With little interactive computing and no WWW, the link between the Program Library and the Computing Newsletter was very strong. All official library notifications were made in the CNL and users were deemed to have read and taken note of them.

The library source was maintained using a CDC proprietary code management utility called Update, which was considered at that time to be easier to use than PATCHY. Despite this, the libraries were increasingly exported to external institutes and the first tools to assist in converting to double precision began to appear. However, the importance of the IBM 360 and its 32-bit architecture for scientific computing increased and with it the problems of portability and the need for double precision floating point arithmetic which was unnecessary on the 60-bit CDC machines.

In 1977, IBM returned to the Cern Computing Centre with the opening of the 370/168 service, the PATCHY4 suite was released and the Program Library sources were converted from Update to PATCHY. The name "cernlib" appeared for the first time in the name of the IBM library "CR.PUB.CERNLIB" and the IBM version of the new HBOOK3 was announced.

In the following year the definitive standard Fortran 77 was published and since then the Cernlib Fortran source has adhered to it as closely as possible. To supplement the deficiencies in Fortran, the dynamic memory management package ZBOOK was added to the Program Library.

Eighties (Increasing complexity)

The decade started with libraries for two flavours of CDC and one IBM, but by 1983 there were also versions for Cray, Vax, Apollo and Nord, laying the foundations for the Unix versions. There were many additions in the mathematical parts of the libraries, to add new functionality and new systems, and also conversions to standard Fortran 77. Consequently, there were many deletions and most of the CNL's had many pages with Program Library modifications and news. However, in 1984 the Fortran 66 libraries were finally frozen, the 7600 was turned off and the CERN directorate made Cernlib freely available to any laboratory involved in the CERN program.

1986 was a noteworthy year. Although ZBOOK had been offered as the dynamic memory management package, a different system, HYDRA, developed in TC division was also widely used. The ZEBRA project was an effort to combine the best points of these two packages and culminated in the addition of ZEBRA to Packlib. The first ISO graphics standard GKS, was starting to replace the ageing GD3 and a new version of HPLOT was using it. The Christmas Newsletter had the first big article on PAW which would be released the following year. In addition to new versions of HBOOK and HPLOT it required two new packages, KUIP (a command interpreter) and HIGZ, a graphical interface to GKS using ZEBRA for data management.

As HBOOK4 and HPLOT5 were incompatible with their predecessors, the last years of the decade were difficult for everyone; users had to convert their applications and parallel libraries had to be maintained. To facilitate change management the "old, pro and new" structure was introduced and the cernlib command extended to all CERN supported platforms. The PAW suite was completed with SIGMA in 1988 and COMIS in 1989. After almost 20 years since its introduction, GD3 was deleted. The last CNL of the decade described the new FATMEN File and Tape Management System, putting in place all the major computing components for LEP which was just starting operation.

Nineties (Unix and C++ arrive)

Although there were few Unix workstations at CERN, the library source was accumulating machine specific PATCHY sections, much of it written in C to interface to the Unix input/output streams and the X-window system. There was growing interest in new Monte Carlo event generators and the Program Library was becoming a redistributor for their authors.

Following the Cernlib users meeting in 1991, the decision was made to break the tradition of synchronizing Cernlib releases with the CNL. With 10 platforms to support, it had become impossible to make reliable library updates with every CNL and interactive newsgroups were well established as a communications medium. The new naming scheme contained the year instead of the CNL number so that v92a was the first release in 1992. Over the years, the mathematical parts of the library had become somewhat irrationally spread over kernlib and genlib so a major reorganisation was made with the creation of mathlib and the suppression of genlib. 1992 also saw the introduction of the database management package for HEP (HEPDB) and the freezing of GKS after a useful but rather short life. The Internet had now become the preferred method of distribution of Cernlib material. Probably the last major new functionality to be added was the PAW interface to Motif in 1993, when PAW++ for Unix was released.

The mood amongst the experiments was now turning to the object oriented paradigm and away from Fortran and the first CNL article on C++ and CLHEP was published in 1994, the last year to have more than one official Cernlib release. Cernlib was now a truly global service and there was pressure from our external users to move away from PATCHY, which was perceived as difficult to use and install. Despite the introduction of the more modern PATCHY5 the Program Library sources were converted to use the C preprocessor together with the public domain code versioning system CVS. The last PATCHY based release was made on 12 platforms at CERN in 1995.

Although declared "frozen" in 1998, Cernlib continued to enjoy popularity amongst a more diverse community, probably due to a very successful port to Linux on PC and also to relaxation of the distribution rules. Despite the great age of most of the code, only a modest effort was required to make it Year 2000 compliant.

The New Millennium

Our current plans are to have a final release in 2002 on a declining set of platforms with enough support to finish the analysis of the LEP data in 2003.
About the author(s): Ian is the CERN Program Librarian since 1997 (see CNL 225).

For matters related to this article please contact the author.

Vol. XXXVI, issue no 1

Last Updated on Thu Apr 05 15:28:11 CEST 2001.
Copyright © CERN 2001 -- European Organization for Nuclear Research