Scale Download

Copyright 2007 by the Scale Compiler Group,
Department of Computer Science
University of Massachusetts,
Amherst MA. 01003, USA
All Rights Reserved.

Scale is an ANSI C and ANSI Fortran 77 optimizing compiler written in Java®. It currently contains a variety of scalar optimizations, alias analysis, dependence testing, and a few loop optimizations. It uses an SSA based intermediate representation.

The Scale compiler is intended for use as a research and/or instructional tool. The Scale compiler and the Java® source code may be accessed for use by other compiler researchers.

Scale produces assembly code and/or C code. Scale may be used for cross-compilation. If Scale produces assembly language, it will call the native assembler to produce .o files.

Scale can be utilized as a "batch" compiler. In this mode, multiple source files may be compiled with one invocation of the compiler. Doing so avoids the overhead of establishing the Java&Reg; environment for each successive compilation. Cross-module inlining may be performed when compiling this way though this requires considerably more memory to accomplish.


Requirements

  1. Scale compilations require a lot of time and memory.
  2. Code generators are available for:
  3. The system uses a translation to Java® of the Omega library Version 1.0 from the University of Maryland. We use it for dependence testing. It has been slightly modified for our needs. This version is included with the distribution.
  4. Scale compiled Fortran programs require the support of a special run-time library. This library consists primarily of the AT&T F2C Fortran IO & intrinsic routines. This source code for this library is provided.

Known Problems

  1. The Java-based parsers have not been thoroughly tested. In particular, very few negative tests have been performed. Consequently, an invalid program may be accepted by the compiler and produce undefined results.
  2. The Mips® backend is not complete.
  3. The PowerPC® backend is not under regression test.

Bug Reports

Bug reports are appreciated. You may send them to the Scale Project.

Please include a "distilled" source code file that is incorrectly compiled. A "distilled" file contains only that code that is necessary and sufficient to illustrate the bug. Please also specify the Scale compiler switches that were used.


Download

You may obtain the Scale jar file to use the compiler. This will be sufficient to compile and execute most C programs. Fortran programs and a small number of C programs require run-time support from a special library. The Scale run-time library source is available. You will need to download this library and compile it. Then, install the library where the loader can find it.

The Scale jar file and the runtime library are updated periodically. For access to up-to-date compiler or the compiler source code, you will need to have access to the Subversion repository.

To compile a simple program use:

   java -jar scale.jar prog.c -oa
or to generate a transformed C file:
   java -jar scale.jar prog.c -oc
FileDateSize
Current Scale jar file Wednesday, 02-Dec-2009 00:09:11 CST 3.1M
Stable Scale jar file Wednesday, 02-Dec-2009 00:09:11 CST 3.1M
Scale run-time library source Thursday, 13-Dec-2007 10:18:16 CST 760K
daVinci for Alpha run-time Thursday, 13-Dec-2007 10:18:16 CST 2.8M
daVinci for Sparc run-time Thursday, 13-Dec-2007 10:18:16 CST 2.4M
daVinci for IBM AIX Thursday, 13-Dec-2007 10:18:16 CST 2.9M
daVinci for SGI IRIX Thursday, 13-Dec-2007 10:18:16 CST 2.9M
You may use the new replacement for daVinci (uDrawGraph) instead.

Repository Access to Compiler Source

As Scale is a research compiler developed for those doing research into compilation techniques, Scale is available through a Subversion repository access. You will need to do a check out of the Java code. The Scale Java code is compiled using GNU make.

Read the notices below and then follow the instructions at the end of this web page.


Copyrights & Licenses

The Scale distribution contains modules from other places. Below are the copyrights & licenses for those pieces.

Scale
f2c
Scale's Fortran run-time system (IO routines & math library) are slightly modified versions of the AT&T Bell Labs F2C system.
The Omega Project
Scale uses a slightly modified version of the omega library to perform dependence testing for array references.
daVinci
Scale is able to use the DaVinci graphical display system, instead of its own Java-based graphical display system, to display ASTs and CFGs as well as other debugging information.


Scale Copyright & License

Copyright 2007 by the Scale Compiler Group,
Department of Computer Science
University of Massachusetts,
Amherst MA. 01003, USA
All Rights Reserved.

IMPORTANT:

Please read this license carefully before using this software. By using, copying or redistributing Scale, you accept and agree to become bound by the terms of this license. Please do not use this software, if you do not accept the terms of this license.

The Scale Research Compiler Scale V1.x (hereinafter referred to as "Scale") has been developed by the Scale project at the University of Massachusetts at Amherst Computer Science Department (hereinafter referred to as "Scale project"). The Scale project grants a "right to use" license of Scale to any user of this software (hereinafter referred to as "licensee") for use under the following conditions:

RIGHT TO USE LICENSE

Permission to copy the system, to redistribute it, and to use it for any purpose is granted, subject to the following restrictions and understandings:

  1. Grant of License

    Scale is licensed free of charge for non-profit or internal use. Any commercial exploitation of Scale, as a stand-alone program, as part of a more comprehensive system or in any other constellation, is prohibited by this license. Please contact the Scale project if you are interested in a commercial license of Scale to use it in case of for-profit applications.

  2. Redistribution

    Scale can only be redistributed for free or as part of a free, non-profit software. Any copy made of Scale must cover the complete distribution, especially this license in full, the complete documentation, all of the tools and examples.

  3. Restrictions

    1. This license does not permit the licensee to alter, modify, improve, decompile, disassemble or otherwise reverse-engineer the obtained object code binaries of Scale. These binaries are proprietary to other parties.
    2. The licensee shall not remove any proprietary copyright legend from Scale or any part thereof.
    3. The licensee may modify the Scale Java® or C source code for their own use in research. However, the licensee shall not remove any proprietary copyright legend from the Scale Java® or C source code or any part thereof.
  4. Obligations

    The licensee agree to make his/her best efforts to inform the Scale project about bugs and noteworthy applications of this system.

  5. Acknowledgement

    All materials, developed as a consequence of Scale, shall duly acknowledge such use, in accordance with the usual standards of acknowledging credit in academic research.

  6. Disclaimer of Warranty

    The licensee expressly acknowledge and agree that use of Scale is at the sole risk of the licensee. Scale and related documentation are provided "as-is". Neither the Scale project nor the University of Massachusetts makes any warrant or representation, either express or implied, for Scale or the University of Massachusetts, including, but not limited to, any implied warranties of merchantability and fitness for a particular purpose. Neither the Scale project nor the University of Massachusetts warrants that Scale will meet the licensees requirements, or that the operation of Scale will run uninterrupted or error-free, or that defects in Scale will be corrected. The entire risk as to the functioning, faultless operation, quality, performance and effect on hardware or other software of Scale is with the licensee. Should Scale prove defective, the licensee assumes the cost of all necessary servicing and repair of correction.

  7. Limitation of Liability Under no circumstances, including negligence, unless required by applicable law, shall the Scale project be liable for any direct, indirect, special, incidental, or consequential damages arising out of the use of or inability to use Scale, even if the Scale project has been advised of the possibility of such damages. Specifically, the Scale project or the University of Massachusetts, its trustees, officers, employees or agents is not responsible for any costs including, but not limited to, those incurred as a result of lost profits, revenue or other economic loss, loss of use of the product, loss of data, the costs of recovering such software or data, the cost of substitute software or data, claims by third parties or for other similar costs.
  8. Disclaimer of Support The Scale project is under no obligation to provide any services, by way of maintenance, consultation, update, or otherwise.
  9. Non-Exclusiveness The licensee recognizes that Scale is released on a non-exclusive basis and the Scale project shall have the exclusive right to grant licenses to others or to make such other use of Scale as it shall desire.
  10. Effectiveness and Termination This license is taking effect after using, installing, copying or redistributing Scale by the licensee. By using, installing, copying or redistributing Scale, the licensee accepts and agrees to become bound by all terms of this license. The license is effective until terminated. The licensee may terminate this license at any time by destroying all components of Scale, related documentations and all copies thereof. This license will terminate immediately without notice from the Scale project if the licensee fail to comply with any provision of this license. Upon termination, the licensee must destroy all components of Scale, related documentations and all copies thereof.
  11. This License shall be deemed to have been made in Amherst, Massachusetts, and shall be construed and its application determined under the laws of the Commonwealth of Massachusetts.
University of Massachusetts, July 12, 2001 - The Scale project


F2C COPYRIGHT & WARRANTY DISCLAIMER

Copyright 1990 - 1995 by AT&T Bell Laboratories and Bellcore.

Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that the copyright notice and this permission notice and warranty disclaimer appear in supporting documentation, and that the names of AT&T Bell Laboratories or Bellcore or any of their entities not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission.

AT&T and Bellcore disclaim all warranties with regard to this software, including all implied warranties of merchantability and fitness. In no event shall AT&T or Bellcore be liable for any special, indirect or consequential damages or any damages whatsoever resulting from loss of use, data or profits, whether in an action of contract, negligence or other tortious action, arising out of or in connection with the use or performance of this software.


daVinci V2.1.x License

(by Mattias Werner - July 13, 1998)

IMPORTANT:

Please read this license carefully before using this software. By using, copying or redistributing daVinci, you accept and agree to become bound by the terms of this license. Please do not use this software, if you do not accept the terms of this license.

The interactive graph visualization system daVinci V2.1.x (hereinafter refered to as "daVinci") has been developed by the daVinci project at Bremen Institute for Safe and Secure Systems, Universität Bremen, Germany (hereinafter refered to as "daVinci project"). The daVinci project grants a "right to use" license of daVinci to any user of this software (hereinafter refered to as "licensee") for use under the following conditions:

----------------------------------------------------------------------------
                            RIGHT TO USE LICENSE
----------------------------------------------------------------------------

Permission to copy the system, to redistribute it, and to use it for any
purpose is granted, subject to the following restrictions and
understandings:

  1. Grant of License
     daVinci is licensed free of charge for non-profit or internal use. Any
     commercial exploitation of daVinci, as a standalone program, as part of
     a more comprehensive system or in any other constellation, is
     prohibitted by this license. Please contact the daVinci project if you
     are interested in a commercial license of daVinci to use it in case of
     for-profit applications.
  2. Redistribution
     daVinci can only be redistributed for free or as part of a free,
     non-profit software. Any copy made of daVinci must cover the complete
     distribution, especially this license in full, the complete
     documentation, all of the tools and examples.
  3. Restrictions
     This license does not permit the licensee to alter, modify, improve,
     decompile, disassemble or otherwise reverse-engineer the obtained
     object code binaries of daVinci. Especially, the licensee shall not
     remove any proprietary copyright legend from daVinci or any part
     thereof.
  4. Obligations
     The licensee agree to make his/her best efforts to inform the daVinci
     project about bugs and noteworthy applications of this system.
  5. Acknowledgement
     All materials, developed as a consequence of daVinci, shall duly
     acknowledge such use, in accordance with the usual standards of
     acknowledging credit in academic research.
  6. Disclaimer of Warranty
     The licensee expressly acknowledge and agree that use of daVinci is at
     the sole risk of the licensee. daVinci and related documentation are
     provided "as-is". The daVinci project makes no warranty or
     representation, either express or implied, for daVinci, including, but
     not limited to, any implied warranties of merchantability and fitness
     for a particular purpose. The daVinci project does not warrant that
     daVinci will meet the licensees requirements, or that the operation of
     daVinci will run uninterrupted or error-free, or that defects in
     daVinci will be corrected. The entire risk as to the functioning,
     faultless operation, quality, performance and effect on hardware or
     other software of daVinci is with the licensee. Should daVinci prove
     defective, the licensee assumes the cost of all necessary servicing and
     repair of correction.
  7. Limitation of Liability
     Under no circumstances, including negligence, unless required by
     applicable law, shall the daVinci project be liable for any direct,
     indirect, special, incidental, or consequential damages arising out of
     the use of or inability to use daVinci, even if the daVinci project has
     been advised of the possibility of such damages. Specifically, the
     daVinci project is not responsible for any costs including, but not
     limited to, those incurred as a result of lost profits, revenue or
     other economic loss, loss of use of the product, loss of data, the
     costs of recovering such software or data, the cost of substitute
     software or data, claims by third parties or for other similar costs.
  8. Disclaimer of Support
     The daVinci project is under no obligation to provide any services, by
     way of maintenance, consultation, update, or otherwise.
  9. Non-Exclusiveness
     The licensee recognises that daVinci is released on a non-exclusive
     basis and the daVinci project shall have the exclusive right to grant
     licenses to others or to make such other use of daVinci as it shall
     desire.
 10. Effectiveness and Termination
     This license is taking effect after using, installing, copying or
     redistributing daVinci by the licensee. By using, installing, copying
     or redistributing daVinci, the licensee accepts and agrees to become
     bound by all terms of this license. The license is effective until
     terminated. The licensee may terminate this license at any time by
     destroying all components of daVinci, related documentations and all
     copies thereof. This license will terminate immediately without notice
     from the daVinci project if the licensee fail to comply with any
     provision of this license. Upon termination, the licensee must destroy
     all components of daVinci, related documentations and all copies
     thereof.

Bremen, July 13th, 1998 - The daVinci project

-End-

Access Scale Source

Scale is available using the Subversion version control system. The URL is
   http://z.cs.utexas.edu/svn/scale/trunk
To check out scale use
  svn co  http://z.cs.utexas.edu/svn/scale/trunk my-scale
An online manual for Subversion is available at http://svnbook.red-bean.com/.

A mail list for Scale is available at https://utlists.utexas.edu/sympa/info/scale-dev.


Send questions or comments to the Scale mail list.
Return to Scale home page.
(Last changed: November 29, 2007.)