EAGLE Version 5 Update Information
==================================

This file contains information for users of previous EAGLE versions.
Please read this file entirely if you are updating from an EAGLE version
prior to 5.12.0!

WARNING: Due to some necessary changes in the data structure once you edit
         a file with version 5.x you will no longer be able to edit it
         with versions prior to 5.0!

         PLEASE MAKE BACKUP COPIES OF YOUR CURRENT BOARD-, SCHEMATIC- AND
         LIBRARY-FILES BEFORE EDITING THEM WITH VERSION 5.0!

WARNING: AFTER UPDATING ANY FILES PLEASE RUN BOTH AN ELECTRICAL RULE CHECK
         (ERC) AND A DESIGN RULE CHECK (DRC)! YOU MAY NEED TO ADJUST THE
         DESIGN RULE PARAMETERS UNDER "Edit/Design rules..." TO YOUR
         SPECIFIC NEEDS! SEE ALSO THE REMARKS REGARDING RESTRINGS AND
         MINIMUM DISTANCES BETWEEN COPPER AND DIMENSIONS UNDER "Design Rules"
         BELOW!

Release notes for EAGLE 5.12.0
==============================

* DISPLAY command:

  - The DISPLAY command can now also delete internal layers, as long as they
    are empty.

* LAYER command:

  - The LAYER command can now also delete internal layers, as long as they
    are empty.

* Miscellaneous:

  - Dialog CHANGE package/technology: Support of external links and representation
    of images.
  - ULP function dlgTextView: Proper support for links to local files (open application).

* Bugfixes:

  - Group selection by polygon: Avoid selecting too much in special case.
  - PRINT command: Transfer options to print dialog if not ended with ';'.
  - CAM processor dialog: Avoid settings getting overridden from previously opened
    CAM file; Avoid crash after save and opening recent file.
  - ULP functions setgroup/ingroup: Bugfix if called for other editor window and no
    group defined yet.
  - ULP function dlgListView: No sorting for parameter sort=0.
  - ULP function dlgComboBox: Avoid jumping combobox size in special case (dlgRedisplay
    called).
  - Fix for wrong REPLACE with package and technology in special constellations.
  - Info dialog for arcs/wires: Correct handling of cap style while changing
    curve to 0/from 0.

Release notes for EAGLE 5.11.0
==============================

* User Language, DesignLink:

  - The User Language dialog object dlgStringEdit now accepts additional
    parameters to implement an input history.
  - The User Language function system() no longer prompts the user for
    confirmation before executing the command.
  - Modified the User Language network functions so that they use the proxy
    as set up in "Help/Check for Update/Config".
  - DesignLink enhancements: Check price & availability for all parts of a schematic,
    load a shopping cart (designlink-order.ulp and designlink-inc.ulp,
    replacing designlink.ulp).
  - DesignLink: Removed the "Customer Details" dialog as the user administration
    is not in service on Element14 web page.
  - DesignLink: Added a text export function to order list (designlink-order.ulp)
    and library tool (designlink-lbr.ulp).
  - Added a PCB quote service as ULP (pcb-service.ulp), that can extract manufacturing
    parameters from the board and send to an Element14 site to get a quote for it.

* CHANGE command:

  - The CHANGE command no longer selects airwires when changing parameters
    that don't apply to airwires (like layer or width).

* EXPORT command:

  - Reduced the minimum resolution in the EXPORT IMAGE command to 1.

* MENU command:

  - The MENU command can now handle icons.
  - The MENU command now automatically turns on the textual command menu.
  - By default the textual command menu is now located right next to the
    action toolbar.
  - The default eagle.scr file now contains MENU commands that configure
    the textual command menu with buttons for DesignLink and the new
    PCB service.

* SET command:

  - The new SET variable CONFIRM can be used to automatically confirm message
    dialogs (see "Help/Editor Commands/SET/Automatic Confirmation").

* Miscellaneous:

  - If the user has modified the widths of the columns in a dlgListView, they
    no longer fall back to their initial values when a different item is
    selected.
  - The new command line option '-U' can be used to define the location
    of the 'eaglerc' file in which EAGLE stores user settings.
    Note that beta versions of EAGLE no longer store their user settings
    in a separate 'eaglerc' file with the extension '.beta'. They now use
    the same 'eaglerc' file as officially released versions. If you want
    to keep things separate for beta versions, use the '-U' option.
  - The new SET parameter Option.AutoLoadMatchingDrawingFile can be used
    to suppress the query "Do you also want to load ...?" in the EDIT command.
  - The new SET parameters Cmd.Name.RenameEntireNetByDefault and
    Cmd.Name.RenameEntireSignalByDefault can be used to control the default
    behavior of the NAME command.
  - Support relative paths of image links in libraries in ADD and REPLACE dialog.

* Bugfixes:

  - Fixed the layer sequence in the PRINT dialog's preview in case the
    output is mirrored.
  - When opening an existing project, windows that were minimized when the
    project was closed, and were previously maximized, will now behave
    correctly when clicking on their taskbar entry.
  - Fixed a crash when executing a script file with several "edit ...; close;"
    sequences in the same line.
  - Fixed wrongfully trying to open the device links in the Control Panel as
    external hyperlinks when resizing the Control Panel.
  - Fixed showing an invoked gate in the INVOKE dialog.
  - Fixed canceling a GROUP/MOVE between sheets.
  - Fixed handling frames in the EXPORT SCRIPT command.
  - Fixed exporting partlists with the EXPORT command in case the part value
    contains "%1".
  - Fixed handling external hyperlinks in the ADD dialog.
  - Under Linux the runtime libraries libssl and libcrypto are now linked
    statically to the executable file, because on some systems the
    required version of these files was not available.
  - Fixed converting lowercase to uppercase characters when renaming a
    package variant via the dialog.
  - Fixed alfanumeric sorting of strings.
  - Fixed setting the sort order in the INVOKE dialog.
  - Fixed recognizing a CAM job as "modified" if only the name of a job section
    has been modified.
  - Fixed the values of UL_VIA.diameter and UL_VIA.shape for supply layers
    in which the via is connected, in case the Design Rules parameter
    "Supply/Generate thermals for vias" is turned off.
  - Fixed limiting stored dialog sizes to smaller desktops.
  - Fixed handling leading or trailing blanks when the user enters a
    Freemium code.
  - Fixed missing spaces after '-' between <nobr> tags.
  - The User Language function ingroup() now checks whether there is actually
    a group defined.
  - Export library as script: Handle single quotes correctly when used
    within attribute values.
  - Fixed displaying the large crosshair cursor at the current mouse
    position when turning it on.
  - Fixed retrieving the parameters of the PRINT dialog from the eaglerc
    settings, so that cfgset() can properly set them.
  - Fixed handling UL_HOLE.diameter[], UL_PAD.diameter[], UL_PAD.shape[],
    UL_VIA.diameter[] and UL_VIA.shape[] in case the board contains supply
    layers that are not visible when the ULP runs.
  - Avoid erroneous change of width of ULP comboboxes.
  - Fix performance issue with big schematics with many device attributes.
  - Fix asymmetric alignment of texts in xref labels with frame.
  - Fixed: New attributes defined in schematic did not get current
    rotation of element when propagated to board.
  - Fixed crash when moving Thunderbird email files across EAGLE windows
    by drag&drop.
  - Use actual wire width for line creation in layer 'unrouted', not zero.
  - Suppress hidden airwires in group selection.
  - Fixed a missing cell padding in the Technologies/Attributes display of
    the library editor under Windows.
  - Fixed point-in-polygon algorithm for group selection by polygon.
  - Enable display of web based images in various description fields
    and HTML editor.
  - Fixed crash when doing a show on a part instance from other than
    current sheet.
  - Improved performance of DRC with selected area.
  - Fixed distortion in printing of mirrored circles.
  - Bugfix: Make GROUP on signals excluded with RATSNEST work again.

Release notes for EAGLE 5.10.0
==============================

* Internationalization:

  - The manual and tutorial are now available in Chinese.
  - The EAGLE program texts have been translated to Hungarian (note that
    the texts provided by the Qt GUI library are not available in that
    language).
  - The EAGLE program texts have been translated to Chinese (note that
    the texts provided by the Qt GUI library are not available in that
    language).

* User Language:

  - The new User Language functions neterror(), netget() and netpost() can
    be used to access remote sites on the Internet.
  - The User Language function t2string() now has an optional format parameter.
  - The User Language now provides functions for processing XML code (see
    "Help/User Language/Builtins/Builtin Functions/XML Functions").
  - The User Language function language() now by default returns "en" if no
    valid language code can be determined.
  - The new User Language function country() can be used to determine the
    country code of the current system (see "Help/User
    Language/Builtins/Builtin Functions/Miscellaneous Functions/country()").
  - The image URL in the <img...> tag of HTML texts may now also be external
    (<img src="http://...">).
  - The new User Language dialog function dlgSelectionChanged() can be used
    to determine whether the current selection in a dlgListView or dlgListBox
    has changed.
  - The new User Language Program 'designlink.ulp' can be used to access
    Premier Farnell's online product database.
    Note that currently the DesignLink server has problems delivering more
    than 50 search results at a time, and can only deliver the first 500
    search results, even if it reports more than 500 hits for any given search.
  - The User Language dialog objects dlgTextView and dlgLabel now open
    external hyperlinks with the appropriate application program.
  - The width of a dlgComboBox is now automatically adjusted when the data in
    its string array is changed.
  - The new User Language functions cfgget() and cfgset() can be used to
    store parameters in the user's eaglerc file.
  - The 'Selected' parameter of a dlgListView can now be initialized to -2
    to make the first item according to the current sort column the selected
    one.

* Miscellaneous:

  - Reverted "Fixed calculating mask data for SMDs with a non-zero roundness"
    from version 5.7.0, because this caused apertures to be drawn that used
    to be flashed.
  - Hyperlinks contained in the descriptions of files or library objects
    are now opened with the appropriate application program.
  - Removed the remark on t/bPlace automatically selecting t/bNames etc.
    from the English version of the online help of the DISPLAY command
    (this was overlooked in version 4.92.3).

* Bugfixes:

  - Fixed setting the text orientation when adding a new attribute via the
    command line.
  - Fixed adding the default ".scr" extension in EXPORT NETSCRIPT.
  - Fixed detecting objects inside hatched polygons that would "fall through"
    the hatch lines.
  - Fixed generating the eaglecon.exe file on Windows systems where a
    realtime virus scanner blocks patching executable files.
  - Fixed a crash under Linux if the mouse cursor is inside a combo box in
    the parameter toolbar, and a new command is started, so that the content
    of the parameter toolbar changes.
  - Fixed alphanumeric sorting by file type in the tree view of the Control
    Panel.
  - Fixed marking the current sort mode in the Control Panel's "View/Sort".
  - Fixed showing an invoked gate when double clicking on it in the INVOKE
    dialog.
  - Fixed displaying the list items of already invoked gates in the INVOKE
    dialog with a dimmer color.
  - Fixed wrongfully assigning generated names to buses when doing
    GROUP/CUT/PASTE.
  - Fixed updating the Control Panel's tree view if an Autorouter control
    file is saved to disk.
  - Fixed drawing artifacts when moving a part in the schematic that has an
    attribute with a value that is longer than the related placeholder text.

Release notes for EAGLE 5.9.0
=============================

* Bugfixes:

  - Fixed generating the default board outlines in the BOARD command of the
    Professional edition.
  - Fixed an endianness problem with the Freemium edition on PPC Macs.
  - Fixed an unjustified "Load error 295" when loading a schematic with more
    than one sheet that has been created with the Freemium edition.

Release notes for EAGLE 5.8.0
=============================

* Platforms:

  - The minimum system requirement for the Mac version of EAGLE is Mac OS X
    10.4 (this was forgotton in the version 5.7.0 release notes).

* License:

  - CadSoft now provides an EAGLE "Freemium" license, which is valid
    for a limited time, and is more powerful than the Freeware license.
    See http://www.element-14.com/eagle-freemium for more information.
  - The Standard edition of EAGLE can now handle 6 signal layers.
  - The "Help/EAGLE License..." option now allows the user to choose between
    using a customized license file, the Freeware or the Freemium license.

* POLYGON command:

  - Added a note to the online help of the POLYGON command, recommending to
    leave the Isolate parameter at 0 to avoid problems during manufacturing.

* PRINT command:

  - The PRINT command now always sets the default output file name to that of
    the currently loaded file when printing to a PDF or Postscript file.

* SET command:

  - SET SNAP_LENGTH now accepts units.

* TEXT command:

  - Added a note to the "Attributes" section of the online help for the
    TEXT command, saying that there should be only one placeholder text
    per attribute name in any given symbol or package.

* Miscellaneous:

  - When a board is loaded, any leftover empty signals are now deleted
    automatically.
  - The total thickness of the layer setup in the Design Rules is now
    displayed with the unit defined in SET Interface.PreferredUnit.

* Bugfixes:

  - Fixed handling UL_VIA.diameter[] for LAYER_TSTOP and LAYER_BSTOP, in case
    the via's drill is not greater than the value defined in "Design
    Rules/Masks/Limit" and the via's VIA_FLAG_STOP is set (in which case
    0 was returned instead of the actual diameter).
  - Fixed making sure that every #include file in a ULP is processed only once.
  - Fixed a possible crash with large Autorouter jobs on Mac OS X.
  - Fixed handling existing exclamation marks in names when updating files
    from versions before 5.0.
  - Fixed using the selected technology in the REPLACE command.
  - Fixed wrongful unsmashing of parts on the source sheet after moving a
    group to an other sheet.
  - Fixed setting the used signal layers after creating a new board from
    a schematic.
  - Fixed reactivating snapping after starting a transparent command while
    the GROUP command is active.
  - Fixed EXPORT IMAGE in monochrome with colored background.
  - Fixed redrawing attributes if only their name has been changed.
  - Fixed a crash when zooming far in to a mirrored text with non-vector
    font on Windows.
  - Fixed displaying combo boxes on Windows with "extra large fonts".
  - Fixed wrongfully adding a wire to an existing signal if the wire is placed
    at a point where a connected SMD pad exists on a different layer.
  - If the ATTRIBUTE command is used with the invalid syntax
    ATTRIBUTE <partname> <attributename> (x y);
    a "Missing attribute value" error is now given.
  - Fixed a missing confirmation in the schematic when changing the value of
    an attribute that has the 'constant' option set in the library.
  - Fixed a possible crash when doing an UnSmash on the last element in a
    board that contains no signals, and where the element has attributes.
  - Fixed artifacts in combo box lists on Mac OS X 10.6.
  - Fixed a possible crash when printing to a PDF file on Mac OS X 10.4.
  - Fixed displaying local attributes in the schematic in case there is
    a global attribute with the same name.
  - Fixed sluggish performance, especially after UNDO/REDO with schematics
    that contain many sheets.
  - Fixed printing on Mac OS X 10.6 with some printer drivers (for instance the
    "HP Laserjet 5100 Series").
  - Fixed a memory leak in case a toolbar is wider than the editor window.
  - Fixed a possible crash when starting a command in the schematic editor,
    doing a SHOW in the board editor, and finally continuing the command in
    the schematic editor in such a way that a forward annotation changes the
    data in the board editor.
  - Fixed handling signal polygons in case a net that is present only on a
    single sheet is completely renamed.
  - Fixed quoting technology names in EXPORT SCRIPT.
  - Fixed switching the "OK" button to "Show" in the INVOKE dialog when
    clicking on a gate that is already invoked.

Release notes for EAGLE 5.7.0
=============================

* Platforms:

  - As of this version, every EAGLE license is valid for all supported
    platforms, without any more additional fee.

* Control Panel:

  - The "View/Refresh" option in the Control Panel's pulldown menu now has
    the platform specific hotkey.
  - The default action when double clicking, pressing Space or Enter on a
    project directory in the Control Panel's tree view is now to open/close
    the project.

* User Language:

  - The new User Language functions setgroup() and clrgroup() can be used to
    set and clear the flags that define whether an object is within the current
    group.
  - It is now possible to directly access members in an array of UL_*
    objects, as in

      UL_SMD smds[];
      ...
      if (smds[i].x == smds[j].x)
         ...

* ADD command:

  - The search string in the ADD dialog is no longer modified if the
    ADD command is called with a unique device name (from the command
    line or the right mouse button history function of the ADD button).

* AUTO command:

 - The AUTO command now supports selecting signal names by wildcards.

* BOARD command:

  - Added a consistency check right after a board is newly created from a
    schematic, in order to immediately catch any problems that otherwise
    might have turned up later on.

* CUT command:

  - The CUT command now clears the paste buffer in case the group is empty.

* DISPLAY command:

  - The DISPLAY dialog now has an 'Apply' button.

* DELETE command:

  - Pads/smds can now be deleted from a package in a library, even if the
    package is in use by a device, as long as the pad/smd is not referenced
    by any pin in any device of that library.
  - Pins can now be deleted from a symbol in a library, even if the
    symbol is in use by a device set, as long as the pin is not referenced
    by any pad/smd in any device of that library.

* GROUP command:

  - Made GROUP ALL also select objects outside the defined coordinate area.

* LABEL command:

  - The coordinates used in xref labels no longer refer to the surrounding
    rectangle of the net, but rather take each object into account separately.

* MARK command:

  - The MARK command now immediately updates the grid display, without the
    need to first move the mouse.

* NAME command:

  - The NAME command now only offers objects that actually have a name in case
    there are several objects within the select radius.

* OPTIMIZE command:

  - The OPTIMIZE command no longer takes airwires into account.
  - The OPTIMIZE command now flashes the selected signal to provide visual
    feedback to a mouse click.

* PAD command:

  - The PAD command can now add a pad to a package, even if that package
    is in use by a device.

* PIN command:

  - The PIN command can now add pins to a symbol, even if that symbol is in
    use by a device set.

* PRINT command:

  - The PRINT dialog now contains a list of all available printers for direct
    selection. Printing to a PDF or Postscript file can also be selected from
    this list.
  - The PRINT command now remembers if the last print went into a file.
  - The PRINT command has a new option named PRINTER, which can be used
    to print to a specific printer.
  - The new option CAPTION of the PRINT command can be used to print a caption
    from the command line.
  - The new option PAPER of the PRINT command can be used to print to a given
    paper size.
  - The file name in the PRINT FILE option may now contain placeholders to
    insert the actual drawing file name or extension.
  - The PRINT FILE command now refuses to write any of the file extensions
    .brd.sch.lbr.gpi.dri.whl.drl.ulp.epf.cam.scr.exe.com.bat.cmd.sys.dll, to
    make sure files are not overwritten inadvertently.

* RATSNEST command:

  - The RATSNEST command no longer stops when it encounters an unknown signal
    name, but rather tells the user about the unknown signals and offers the
    choice of continuing.
  - The RATSNEST command, if given a signal name, now only processes the
    polygons of the given signal, not all polygons of all signals.
  - The context menu of wires and vias that belong to a signal now contains
    the RATSNEST command.

* ROUTE command:

  - The ROUTE command no longer activates the current layer when it is
    started, but waits until an airwire has actually been selected.
  - The Follow-me router now uses the via diameter as set in the parameter
    toolbar.

* SET command:

  - When entering values for the Catch_Factor or Select_Factor in the SET
    command via the command line, numbers in the range [1 ... 100] are now
    taken as percentages to avoid errors caused by not entering the factor
    as a decimal number between [0.0 ... 1.0].
  - The new parameter Option.LayerSequence can be used to define the
    sequence in which layers are rendered (see "Help/Editor Commands/SET").

* SHOW command:

  - The SHOW command with the '@' option now also draws the pointer rectangle
    in the other editor window, if f/b annotation is active.
  - The highlighted objects from the SHOW command's dialog now stay
    highlighted, even after closing the dialog (until the end of the SHOW
    command).

* SMD command:

  - The SMD command can now add an smd to a package, even if that package
    is in use by a device.

* UPDATE command:

  - The UPDATE command now allow selecting multiple files from the file dialog.

* USE command:

  - The USE command now allow selecting multiple files from the file dialog.

* VALUE command:

  - The VALUE command button now also has a history function.

* VIA command:

  - The VIA command now issues an error message if there are no vias defined
    in the layer setup.

* CAM Processor:

  - Added CAM Processor driver GERBER_RS274X_25 with 2.5 inch coordinate
    format.
  - The default CAM jobs no longer have the "Mirror" option checked.

* Miscellaneous:

  - The sorting sequence of numeric strings that differ only in the number
    of leading zeros in their numeric parts has been made stable (i.e.
    sorting them more than once always leads to the same sequence).
  - The Properties dialog of a wire now also displays the angle of the wire.
  - The progress display of the CAM Processor no longer keeps popping into
    the foreground.
  - Improved the performance of recalculating the ratsnest in the board after
    an ADD, DELETE or PASTE command in the schematic, in case many pins are
    processed that are connected to the same net.
  - Made the origin crosses for elements in a board smaller, so that they
    don't overlap that much in case of small SMD parts.
  - The Properties dialog of an element now applies modified coordinates and
    orientation settings even if the "Locked" flag is checked.
  - Added a general note to the online help about the special coordinate
    value '(@)'.
  - Leading and trailing blanks in file and directory names are now ignored.
  - When defining a new drill diameter in the "Options/Set/Drill/New" dialog,
    the default unit is now the same as in the editor window's grid.
  - Fixed handling empty keys in bom.ulp.
  - For better readability the sheet thumbnails now show only the individual
    sheet number, without the total number of sheets.
  - Speeded up handling parts with lots of attributes in the schematic.
  - The Design Rules plausibility check now tests whether the clearance values
    for 'same signal' are not larger than those for 'different signals'.
  - The _OUTLINES_ polygon (if present) is now calculated with increased
    precision, to allow the milling contours to better follow the object
    outlines.
  - The detection of connected parts of a calculated polygons (which is used,
    for instance, in the RATSNEST and ROUTE commands) has been speeded up.
  - Removed an unnecessary dependency of libXft.so in the Linux version.
  - The new SET parameter Interface.MouseButtonReleaseTimeout can be used
    to set a timeout within which a mouse button release will trigger a
    button's action, even if the release happened outside the button's area
    (default is 500ms).
  - The color index in the dxf.ulp now starts at 1, since AutoCAD 2007 doesn't
    like color 0.
  - The CAM Processor's warning about polygons that may produce very large
    plot data is now only given if the layer containing that polygon will
    actually be plotted.
  - The Value entry in the Properties dialog of a part where the device has
    "Value off" now contains a check box that indicates that this value
    overwrites the default (i.e. the device name). When this box is unchecked,
    the value falls back to the default.
  - When opening a project, the windows that get opened are no longer scaled
    to the current desktop size, but rather moved and resized if necessary
    to make them fit entirely onto the desktop.
  - Switching between windows with Alt+0, Alt+1 etc. has been disabled on
    the Mac OS X platform, because on some localized keyboard layouts these
    key combinations are already used otherwise.
  - Implemented the placeholders >SHEETNR and >SHEETS to make the sheet number
    and the total number of sheets in a schematic available separately.
  - Added a note to the online help about selecting the layer in the ATTRIBUTE
    and LABEL commands.
  - When a schematic is loaded, any leftover empty nets are now deleted
    automatically.
  - If a board file that has been created with an EAGLE edition that can
    handle only a subset of the routing layers is loaded with an edition that
    can handle additional routing layers, and the layer setup is changed so
    that additional layers are used, these layers are now created
    automatically.
  - Improved performance of panning outside the surrounding rectangle of the
    entire drawing.

* Bugfixes:

  - Fixed missing technology when adding string to the command button history
    of the REPLACE command.
  - Fixed a crash with negative 'number' parameter in the User Language
    function sort().
  - Fixed handling links like <a href="#abc"> in dlgTextView.
  - The "Link" variable in dlgTextView can now be used to initially scroll
    to a given position in the text.
  - Fixed sorting in the INVOKE dialog.
  - Fixed handling links like <a href="#abc"> in the Control Panel.
  - Fixed restoring the width of the sheet thumbnail view if the view is
    docked.
  - Fixed handling the minimum drill distance in the Autorouter.
  - Fixed refreshing the draw window if color palette entries are changed
    via the SET command.
  - The modification "Fixed dynamic airwire calculation in the ROUTE command
    in case layers containing objects that belong to the routed signal are not
    displayed" that was done in version 5.2.4, has been revoked because it
    caused segments of a signal that are connected through wires in the
    undisplayed layer not to be seen as connected, which resulted in an
    incorrectly calculated dynamic airwire.
  - Fixed redrawing polygons that extend outside the board area when the
    Autorouter is started.
  - Fixed artifacts in case a smashed part that contains the placeholders
    >PLOT_DATE_TIME, >LAST_DATE_TIME or >DRAWING_NAME is moved.
  - Fixed the paper size values in the PRINT dialog.
  - Fixed skipping airwires when pasting from a board into a package drawing.
  - Texts and rectangles in user defined layers of a board or package, that
    have a non-orthogonal angle, are now skipped when pasting them into a
    sheet or symbol drawing.
  - The parameters of the editor window no longer fall back to defaults when
    loading a different drawing.
  - Fixed handling signal polygons in the Autorouter.
  - Fixed an unjustified warning message "The attribute '...' is already
    defined in the board with value '...'! Overwrite?".
  - Fixed UL_PART.attribute[] in case the actual name of the attribute is
    longer than the string given as the index, as in "ABC" vs. "ABCDE".
  - Fixed a possible loss of consistency after GROUP/CUT/PASTE in case a
    part on a schematic sheet is in the group, but the net wire connected
    to one of its pins isn't. After deleting some other wires from that net
    the consistency between board and schematic may have been lost.
  - Fixed adding the "Cancel" button to the message box in case a script is
    run in a library and nothing has been selected for editing.
  - Fixed calling the User Language function strxstr() without any optional
    parameter.
  - Fixed a possible crash in case a net wire completely disappears when
    moving one of its end points onto the other.
  - Fixed the User Language function strtol(), so that hex values above
    0x7FFFFFFF are converted to negative integers.
  - Fixed a crash in the Follow-me router when changing the grid and the
    current layer while an airwire is attached to the cursor.
  - Fixed handling lowercase characters in placeholder texts for attributes in
    the SMASH command.
  - Fixed handling the '.tif' extension in the EXPORT IMAGE command.
  - Fixed handling nested typecasts in User Language programs.
  - Fixed handling wire bend styles in the ROUTE command without autorouter
    module consistently in case right mouse button clicks and clicking on
    the bend style buttons in the toolbar is mixed.
  - Fixed an unnecessary extra automatic backup if the automatic backup is
    triggered in one editor window, while a lengthy command is running in the
    other editor window.
  - Fixed a possible data corruption if the automatic backup is triggered in
    one editor window, while a lengthy command is running in the other editor
    window.
  - Fixed displaying script comments containing UTF-8 characters in the
    Control Panel.
  - Fixed handling "dead keys" under Windows.
  - Fixed a crash in the Follow-me router when selecting a new airwire with
    Ctrl-Left mouse button.
  - Fixed a possible crash when using the file dialog after closing a project.
  - Fixed calling UL_ATTRIBUTE.defaultvalue for attributes that are defined in
    the library from within a schematic in case a project is open.
  - Fixed calculating the pointer rectangle in the SHOW command in case the
    shown net segment contains only pin references (no wires, labels or
    junctions).
  - Fixed pasting smashed parts with attributes in the schematic (the attribute
    value was lost in such cases).
  - Fixed the ERC to detect nets with only one pin connected to them, in case
    the only other pin types connected to that net are supply pins that have
    no pad.
  - Fixed handling backslashes and exclamation marks in part names and values
    when updating from versions before 5.0.
  - Fixed a crash on Mac OS X when leaving the program while the CAM Processor
    window is open and has keyboard focus.
  - Fixed the library update in case only attributes with empty values have
    been modified.
  - Fixed a hangup when pressing the right mouse button inside an entry
    field that checks its contents and currently contains invalid data.
  - The EXPORT IMAGE command no longer leaves a zero length file in case it
    runs out of memory.
  - The RIPUP command no longer selects objects it can't rip up.
  - The CAM Processor message "Package '...' of element '...' contains a
    polygon that may cause extremely large plot data" had the package and
    element name reversed.
  - Fixed a loss of the sheet thumbnail view if temporarily changing to another
    virtual desktop under GNOME.
  - Fixed a problem with REPLACE in the board if the schematic has been closed
    immediately before from within a script.
  - Fixed handling newlines when saving *.cam files.
  - Fixed handling supply layers in case a board is edited that contains supply
    layers, and then an other board is loaded that doesn't contain one or more
    of these layers.
  - Fixed disappearing group polygon lines in case the WINDOW command is used
    while a group polygon is being drawn.
  - Fixed handling the .dev, .pac and .sym extensions if they are entered in
    the EDIT dialog of the library editor.
  - Workaround for a problem with constructing a maximized window initially
    minimized on Windows.
  - Fixed calculating the bounding rectangle of xref labels.
  - Fixed the DISPLAY LAST command in case the previous DISPLAY command
    didn't actually change anything.
  - Fixed drawing artifacts with SMDs in case the Cream frame mask parameter
    is not zero.
  - Fixed overlapping texts in the LayerSetup dialog in case only the Top
    layer is active.
  - Fixed handling negative array indexes in User Language programs.
  - Fixed calculating mask data for SMDs with a non-zero roundness.
  - Fixed a possible data corruption in case a script contains a CONNECT
    command followed by a REMOVE command (without an intermediate EDIT
    command).
  - Fixed optimizing duplicate overlapping wires in case there are pads or
    vias at both ends.
  - Fixed optimizing a short wire that is overlapped by a longer wire at a
    point where a third wire ends.
  - Fixed the online help for the User Language statement 'while'.
  - Fixed wire coordinates in UL_PIN.texts().
  - Fixed relocating wires and vias in the CHANGE PACKAGE command.
  - Fixed detecting clearance errors between round pads, vias or smds if the
    minimum clearance value is larger than 4.634mm.
  - Fixed wrong z-order after re-docking a floating toolbar under Linux.
  - Fixed resizing floating parameter toolbars if their contents changes.
  - Fixed setting the width of the columns in the attribute list of the
    properties dialog and in the change package dialog.
  - Now removing duplicate PinRefs and Connects when loading a schematic
    or a board, respectively.
  - Fixed a superfluous UNDO step after loading an other schematic from
    within the schematic editor, or creating a new sheet in an existing
    schematic.
  - Fixed handling error conditions in case the PRINT command tries to write
    to a file that is currently open by another application.
  - Fixed updating the surrounding rectangle of the source sheet when moving a
    part from one sheet to another.
  - Fixed displaying layer colors and fill styles in dialogs on Ubuntu-Linux
    (problem observed on Ubuntu version 9.10).
  - Fixed drawing the large cursor on Ubuntu-Linux with desktop transparency
    effect (problem observed on Ubuntu version 9.10).

Release notes for EAGLE 5.6.0
=============================

* Bugfixes:

  - Fixed RIPUP to make it stop at pads when clicking on an airwire
    (was broken since version 5.2.4).
  - Fixed a possible "Abort: Unknown objectType..." in the SIGNAL command.
  - Fixed a bug in the Autorouter that sometimes caused DRC errors at pads,
    vias and SMDs.
  - Fixed the status message after a DRC or ERC, which sometimes wrongfully
    contained the word "approved".
  - Fixed a possible inconsistency of net classes after renaming all segments
    of a net on the current sheet.
  - Fixed a possible inconsistency of net classes after pasting parts with
    power pins that automatically create new signals in the board.
  - Fixed handling cfPad/SmdImpact in the Autorouter.
  - Fixed terminating a track in the Follow-me router by clicking twice at the
    same point.
  - Fixed an unexpected offset of the airwire when clicking at an unroutable
    point in the Follow-me router.

Release notes for EAGLE 5.5.0
=============================

* User Language:

  - The new function strxstr() can be used to search strings using regular
    expressions in User Language Programs.
  - Added a note to the online help for UL_DEVICE about using the 'package'
    data member to check whether this device has a package.

* Design Rule Check:

  - The DRC no longer issues a "Drill Distance" error for vias that have only
    one layer in common, e.g. 1-2 and 2-3 ("stacked vias").
  - The Design Rules dialog now issues a warning if the layer setup uses
    any layers that are not available in the licensed program edition.

* Text editor:

  - It is now possible to use an external text editor instead of EAGLE's
    built in text editor (see "Help/Editor Windows/Text Editor").

* AUTO command:

  - The new option FOLLOWME in the AUTO command opens the Autorouter dialog
    in a mode where only the parameters controlling the Follow-me router
    can be modified.
  - Routing from and to pads, smds and vias in the Autorouter has been
    improved.

* CHANGE command:

  - The CHANGE PACKAGE/TECHNOLOGY command no longer overwrites the value of
    parts where the device has "value off", but the user has overwritten the
    value (which is detected by comparing the old value to the name of the old
    device).

* CONNECT command:

  - Improved handling the width of the connection list in the CONNECT dialog.

* DRC command:

  - The DRC command no longer automatically brings up the ERRORS dialog if
    there are only approved errors.

* ERC command:

  - The ERC command no longer automatically brings up the ERRORS dialog if
    there are only approved errors/warnings.
  - The ERC message "OUTPUT and ... pins mixed on net ..." has been enhanced
    to show the actual direction of the referenced pin, so that the offending
    pin can be easily located.

* EXPORT command:

  - The new option WINDOW of the EXPORT IMAGE command can be used to export
    an image that contains only the currently visible window selection of the
    drawing.

* PRINT command:

  - The new option SHEETS of the PRINT command can be used to print a given
    range of sheets from the command line.
  - The new option WINDOW of the PRINT command can be used to print only the
    currently visible window selection of the drawing.
  - The new options PORTRAIT and LANDSCAPE of the PRINT command can be used to
    define the orientation of the resulting output.

* RENAME command:

  - The RENAME dialog now contains the current name of the object, so that
    it is easier to make small changes.

* REPLACE command:

  - The REPLACE command no longer overwrites the value of
    parts where the device has "value off", but the user has overwritten the
    value (which is detected by comparing the old value to the name of the old
    device).

* ROUTE command:

  - The ROUTE command can now be used in "Follow-me" mode, where the
    Autorouter is used to automatically route the selected airwire according
    to the current Design Rules and Autorouter parameters.
    Note that you need to have the Autorouter module enabled in your EAGLE
    license in order to use the Follow-me router.
  - The ROUTE command now automatically sets the wire width and via drill
    according to the values defined by the Design Rules and net classes if
    the new flag "Options/Set/Misc/Auto set route width and drill" is set.

* SET command:

  - The new wire bend styles '8' and '9' are used to control the behavior of
    the Follow-me router. '8' means route only the short end of the selected
    airwire, while '9' routes both ends.

* SHOW command:

  - If the '@' character is given in the command line of the SHOW command,
    a pointer rectangle is now drawn around the shown object. This is helpful
    in locating small objects that wouldn't show up too well just through
    highlighting.
  - If an object given by name in the SHOW command is not found on the current
    schematic sheet, a dialog is now presented containing a list of sheets on
    which the object is found.

* UPDATE command:

  - The library update no longer overwrites the value of parts where the
    device has "value off", but the user has overwritten the value (which is
    detected by comparing the old value to the name of the old device).

* Miscellaneous:

  - Improved performance of approving ERC/DRC errors.
  - Speeded up clearing the ERRORS list when clicking on the "Clear all" button
    of the dialog.
  - Modified the way EAGLE writes its files in order to avoid data corruption
    on broken NAS (Network Attached Storage) systems.
  - Speeded up calculating signal polygons.
  - The packages of parts that are added to the schematic are now placed on
    the board using the current grid.
  - Speeded up filling the ERRORS list after running the DRC/ERC.
  - The "File/Save all" function now also saves the eaglerc file.
  - Some users don't want the warning message about a supply pin overwriting
    a generated net name. The command

    SET Warning.SupplyPinAutoOverwriteGeneratedNetName 1;

    can now be used to disable that warning.
  - Added a note to the "Stop" checkbox in the properties dialog of a via,
    telling the user that this is not applicable if the drill diameter of the
    via exceeds the value defined in "Design Rules/Masks/Limit").
  - When a supply pin is placed on a net segment, the user is now asked
    whether the net segment shall be renamed to the name of the supply pin.

* Bugfixes:

  - Fixed checking for balanced pairs of '{' and '}' in the MENU command.
  - Fixed updating the via length combo box if the layer setup is modified
    while the VIA command is active.
  - Fixed displaying technology names in the device editor's Description
    pane in case they differ only in leading zeroes of their numeric parts.
  - Fixed marking a drawing as modified if a global attribute is changed.
  - Added missing User Language constants FRAME_BORDER_*.
  - Fixed changing the layer of a polygon in a package or symbol (it wouldn't
    change between signal and non-signal layers).
  - Fixed a crash when doing a Drag&Drop from the WinRAR program under
    Windows (dropping still doesn't work from WinRAR, but at least EAGLE
    won't crash any more).
  - Fixed updating the path names of items in the Control Panel's tree view
    if the directory in which they are contained is renamed from within the
    tree view.
  - Fixed handling the 'catch factor' in case it is smaller than the 'select
    factor'.
  - Fixed handling the indicator lines if a smashed text of a locked part
    is contained in a GROUPE MOVE.
  - Fixed updating the via diameter display in the Properties dialog when
    changing the drill diameter and clicking on 'Apply'.
  - Fixed updating the tree list in the ADD, REPLACE etc. dialog when
    reopening such dialogs after modifying a library from outside of EAGLE.
  - Fixed printing pad shapes in inner layers.
  - Fixed drawing drill holes of pads and vias (they were drawn one pixel too
    small in radius).
  - Fixed unjustified ERC warning "Segment of net ... has no visual connection
    (like Label, Bus or Supply pin) to other segments of the same net" in case
    of empty segments (which sometimes were left over from older versions).
  - Fixed sticky status messages like "DRC:".
  - The layer setup tab in the Design Rules dialog now displays the total
    thickness of the board by adding up all copper and isolate values.
  - Fixed a possible loss of consistency when deleting a junction from a pin.
  - Fixed displaying status messages in the text editor.
  - Added missing constants LAYER_INFO and LAYER_GUIDE to the online help
    page for UL_LAYER.
  - Fixed using the MIRROR and ROTATE command after defining a new group
    while one of these commands is already active.
  - Fixed handling the <img> tag in the description editor and in the ADD
    dialog.
  - Fixed an occasional problem with renaming temporary files on Windows in
    case the new file name already exists.
  - Fixed keeping approved DRC errors when clicking on the "Clear all"
    button in the ERRORS dialog.
  - Fixed initial display of a pasted group at the mouse position in case
    the PASTE command was entered from the command line with an orientation.
  - Fixed showing the current angle in the Angle combo box of the parameter
    toolbar if the value has been entered in the command line and is not one
    of the default orthogonal values.
  - Fixed a crash when clicking with the MITER command on a wire of a polygon
    that consists of only three edges.
  - Fixed generating technology and attribute lines in EXPORT SCRIPT for
    devices that have no package (like frames etc.).
  - Fixed detaching a pin from a net in case one net wire ends at the pin,
    while another net wire of the same net segment passes over the pin's
    connection point, and the wire ending at the pin is deleted. In such
    a situation, the pin was left connected to the net, and when it was
    later connected to a different net, the corresponding pad in the board
    was connected to two different signals.
  - Fixed the online help of the <a> HTML tag (it allows only links within
    the same document).
  - Fixed approving DRC errors in the ERRORS dialog in case some errors are
    currently not displayed, because their layer is hidden.
  - Fixed a crash in the Mac version in case a device was loaded in the
    library editor, the "EAGLE" pulldown menu was openend and the mouse cursor
    was moved over the (wrongfully disabled) "Quit EAGLE" item.
  - Fixed toggling the group membership of objects when clicking on them
    with the Ctrl key pressed.

Release notes for EAGLE 5.4.0
=============================

* Miscellaneous:

  - Speeded up the window refresh in the schematic editor in case there are
    many parts with lots of attributes that don't display their value.

* Bugfixes:

  - Fixed detecting faulty nameless attributes for parts in case a part is
    copied and there have been attributes deleted before that.
  - Fixed a crash in the DRC with zero-width arcs in the t/bRestrict layers.
  - Fixed checking zero-width straight wires in the t/bRestrict layers.
  - Fixed changing the net name of every segment on the current sheet in case
    the same net is also present on other sheets.
  - Fixed handling UNC paths in Options/Directories.
  - Fixed selecting multi-gate parts by name in the NAME command (the old name
    had to be given as a full gate name, e.g. IC1A, instead of the basic part
    name, e.g. IC1).
  - Fixed drawing artefacts when moving a part in the board that has pads or
    smds with long names, and displaying the pad names is activated.
  - Fixed a crash in the User Language function fileglob() in case the given
    pattern string is empty.
  - Fixed a duplicate confirmation when using the User Language function
    dlgFileSave().
  - Fixed clearing the status bar in the SHOW command when clicking on an
    object that has no name after highlighting a named object.
  - Fixed handling zero length airwires when moving a group.
  - Making sure the actual via length used in the VIA command is one of
    those defined in the layer setup.
  - Fixed superfluous airwires when checking whether a wire is connected to
    a polygon.
  - Fixed calculating polygons with a large Width that are connected to pads
    with thermals.
  - Fixed faulty backannotation when changing an attribute of an element in
    the board where the corresponding part in the schematic doesn't have that
    attribute.
  - Fixed handling pin names with @nn when CUT/PASTEing.
  - Fixed a crash when entering 'CLASS -8'.
  - Fixed clearing the "Updating libraries from paste buffer" status message
    in the PASTE command.
  - Fixed invoking instances after CUT/PASTE in case they were smashed and
    were not part of the original group.
  - When loading a schematic or library file from an earlier version, the
    new layers 97 and 98 are now automatically added.
  - Fixed handling the drill holes of blind/buried vias in the CAM Processor
    in case none of the layers affected by a particular via is active (if the
    "Fill pads" option was unchecked, the hole was always drawn and may have
    punched through wires in other layers).
  - Fixed handling the offset of wires and texts of frames contained in a
    device's symbol in UL_FRAME.
  - Fixed handling the orientation and positioning of texts of frames
    contained in a device's symbol in the CAM Processor.
  - Fixed handling extensions in the RENAME command.
  - Fixed calculating the number of edges for arcs and circles in the CAM
    Processor's output devices.
  - Fixed a possible data corruption if the RIPUP command with the '!'
    option was used without terminating the command line with ';'.

Release notes for EAGLE 5.3.0
=============================

* Platforms:

  - The Linux version of EAGLE no longer uses libXinerama and libXfixes,
    because these libraries are not available on all systems.

* User interface:

  - Normally EAGLE doesn't automatically position the mouse cursor. However,
    some users want the cursor to be repositioned to the point where it has
    been before a context menu in the drawing editor was opened. The command

    SET Option.RepositionMouseCursorAfterContextMenu 1;

    can now be used to get this functionality.
  - Shift+Right mouse button now reverses the direction of rotation in
    commands that rotate objects with the right mouse button.

* AUTO command:

  - Added the options LOAD and SAVE to the AUTO command, which allow loading
    and saving the Autorouter parameters.

* BOARD command:

  - The default board outlines generated by the BOARD command now start at
    the origin of the drawing area, and are no longer offset so that they
    are centered within the 50mil grid.

* INVOKE command:

  - The INVOKE command now displays in the status line the part and device
    name of the object attached to the cursor.

* PASTE command:

  - The PASTE command now accepts an 'orientation' parameter in the command
    line.
  - The PASTE command is no longer a transparent command, because this
    prevented its parameter toolbar from being shown.

* ROUTE command:

  - When routing an airwire that starts at an already routed wire, the new
    wire's width is now automatically adjusted to that of the existing wire
    if the Shift key is pressed when selecting the airwire.
  - The end point of the dynamically calculated airwire is now always used as
    an additional snap point, even if it is off grid. If the remaining airwire
    has a length that is shorter than SNAP_LENGTH, the routed wire
    automatically snaps to the airwire's end point, and stays there until the
    mouse pointer is moved at least SNAP_LENGTH away from that point.
    The SET parameter SNAP_BENDED is now obsolete, but is still tolerated for
    compatibility.

* SET command:

  - When routing an airwire that starts at an already routed wire, the new
    wire's width is now automatically adjusted to that of the existing wire.
  - The SET parameter SNAP_BENDED is now obsolete, but is still tolerated for
    compatibility.

* Miscellaneous:

  - Improved selecting wires of the same signal that are close together.
  - Pin names with '@' are now displayed in the previews the same way as in
    a schematic (with everything after and including the '@' stripped).

* Bugfixes:

  - Now clearing the status bar after a Properties dialog.
  - Fixed handling polygons in the t/bStop layer of mirrored elements in the
    DRC.
  - Fixed getting the path to the AppData directory from the Windows
    registry in case it contains non-ASCII characters.
  - Fixed a crash in the NET command when clicking on a bus that has a name
    that consists only of a "SYNONYM:" part.
  - Fixed handling via lengths in the Properties dialog that are not allowed
    according to the layer setup.
  - Fixed a crash in the CHANGE LAYER command with signal wires.
  - Fixed displaying and printing objects in layer 50.
  - Fixed renaming a net in the Properties dialog, in case the same net
    is present on other sheets, too.
  - Fixed a possible loss of consistency when making changes in the schematic,
    switching to another sheet, making more changes, and then doing UNDO in
    the board, in which case the number of undo steps in the two editor
    windows drifted apart. Every time the sheet is changed in the schematic
    editor, a separate UNDO step is now stored, even if there is no actual
    change made on that sheet.
  - Fixed unSMASHing parts in the schematic (this deleted attributes from the
    part in the board).
  - Fixed extremely long delay when saving a file.
  - Fixed the example regarding the use of SMD_FLAG_STOP in the online help
    page for UL_SMD.
  - Fixed displaying the status bar header in case a command runs for a
    longer time and the mouse is moved inside the editor window.
  - Fixed the User Language function UL_SIGNAL.airwireshidden.
  - Fixed marking the text in the first string entry field in a User Language
    dialog when the dialog is opened (didn't work under Windows).
  - Fixed handling the $HOME environment variable in the directories set in
    the Options/Directories dialog under Windows.
  - Fixed selecting pins with the GROUP command (they were included in the
    group even if the Symbols layer was not active).
  - Fixed faulty nameless attributes for parts in case a part is copied and
    there have been attributes deleted before that.
  - Fixed ensuring that the text cursor is visible when opening a text
    editor window while loading a project.
  - Fixed displaying the placeholder texts ">DRAWING_NAME", ">LAST_DATE_TIME",
    ">PLOT_DATE_TIME" and ">SHEET" in a new, yet unsaved drawing.
  - Fixed keeping the layer list focused when clicking on a button in the
    DISPLAY dialog.
  - Fixed always displaying text in the HTML editor's upper pane as HTML.
  - Fixed centering on the current error in the ERRORS dialog by pressing
    the 'Enter' or 'Return' key.
  - Fixed setting the focus in the Design Rules dialog.
  - Fixed refreshing the Control Panel's tree view after copying a directory.
  - Fixed erasing the original airwire after displaying a dialog while the
    ROUTE command is active with an airwire attached to the mouse pointer.
  - Fixed reporting calls to non-existing object members in the User Language
    (like, for instance, UL_WIRE.arc.curve).
  - Fixed setting the 'Curve' parameter to 0 in the Properties dialog of
    an arc shaped wire.
  - Fixed a possible crash when using CLOSE in a script file and a message
    box appears after that.
  - Fixed automatically placing elements in the BOARD, ADD and PASTE command
    (issued from the schematic), so that they are not placed outside the
    valid range of coordinates.
  - Fixed sorting newly created items in the Control Panel's tree view.
  - Fixed drawing artefacts when doing UNDO after RIPUP.
  - Fixed duplicate data for rotated rectangular apertures in Gerber RS-274-X.
  - Fixed drawing artefacts when doing UNDO after deleting a polygon edge.
  - Fixed dynamic airwire calculation in the ROUTE command in case layers
    containing objects that belong to the routed signal are not displayed.
  - Fixed entering values into the Angle combo box of the parameter toolbar.
  - Fixed setting HKEY_CLASSES_ROOT\Applications\eagle.exe\shell\open\command
    in the Windows registry ("command" was a string instead of a key).
  - Fixed printing lines with zero width on the Mac (they were printed too
    thick).
  - Fixed a possible hangup when pressing a character or digit key in the
    table of the attribute dialog of the library editor.

Release notes for EAGLE 5.2.0
=============================

* ATTRIBUTE command:

  - The "Technologies" combo box in the "New/Change Attribute" dialog now lists
    the name of the current technology.
  - Changed the behavior of the ATTRIBUTE command in case no coordinates are
    given in the command line, so that the value of an existing attribute
    can be changed via the command line.

* DRC command:

  - The DRC now reports supply layers, that are not contained in the layer
    setup of the Design Rules, as "Layer Setup" errors.

* SET command:

  - The SET command can now be used to set parameters of the eaglerc file.

* Miscellaneous:

  - If you don't like the way unprocessed polygons display their edges (as
    dotted lines), you can change this with the command

    SET Option.DrawUnprocessedPolygonEdgesContinuous 1

    The edges of unprocessed polygons will then be displayed as continuous
    lines, as was the case before version 5 (however, they will not be
    highlighted).
  - The commands CUT, DRC, ERC, ERRORS, EXPORT, GROUP, OPTIMIZE, PASTE, PRINT,
    RATSNEST, UPDATE, USE and WRITE are now "transparent", which means they
    no longer terminate a previously active command like MOVE etc.
  - The layers are now drawn in a sequence that properly reflects the actual
    resulting board. For instance, the bottom placeplan is drawn first, then
    the signal layers from bottom to top, then the top placeplan. This
    sequence is reversed when printing mirrored.
  - Added a note to the online help of the PAD and VIA commands, saying that
    the shape only applies to the outer layers (in inner layers the shape is
    always "round").
  - Parts on the board are now shifted into the allowed area of the
    Light or Standard edition, respectively, if they extend outside that area
    after a REPLACE, CHANGE PACKAGE or UPDATE operation.

* Bugfixes:

  - CHANGE SHAPE now silently ignores the options LONG and OFFSET when
    entered in the command line of a board editor window.
  - Fixed displaying very narrow rectangles under Linux, in case the resulting
    rectangle on the screen is only a single pixel wide.
  - Fixed visibility of sheet numbers in sheet thumbnails in case of black
    background.
  - Fixed calculating the number of edges when drawing an arc with round
    endings in the CAM Processor.
  - Fixed changing the wire bend style with the parameter toolbar buttons
    after switching into arc mode with Ctrl+Left.
  - Fixed a User Language performance issue with string expressions like
    's += t' in loops with many executions.
  - Fixed a crash when changing the grid color while a library is open
    without having edited a particular package, symbol or device set, yet,
    and the grid is actually displayed.
  - Fixed a performance issue in displaying status messages and progress bars.
  - Fixed handling uppercase characters in directory names in the Control
    Panel's tree view under Windows and Mac OS X.
  - Fixed setting the state of a dlgCheckBox from within its statement.
  - Fixed a crash when entering a curve parameter (like "@+20") in a command
    that works with wires, without an actual wire attached to the cursor.
  - Fixed a loss of the current text marking when clicking into a numerical
    entry field with the right mouse button.
  - Fixed a possible data corruption after changing the coordinates of an
    object or the layer of a wire in the properties dialog, in case this
    resulted in a wire optimization.
  - Fixed handling the 'A' modifier in coordinates entered in the command line.
  - Fixed redisplaying a ULP dialog if the dlgRedisplay() call is followed by
    a loop statement.
  - Fixed an unexpected change of the offset in a dlgTextView in case an other
    dialog item is modified.
  - Fixed displaying status messages while a script is running.
  - Fixed calculating the width of the last column in a dlgListView.
  - Fixed updating the layer colors in the parameter toolbar's Layer combo
    box in case they are modified with the DISPLAY or SET command while
    a command is active.
  - Fixed forward annotating a change of a net name in the properties dialog
    of a net wire or junction.
  - Fixed drawing rotated rectangles with the CAM Processor's GERBER_RS274X
    driver in case the drawing consists exclusively of such rectangles.
  - Fixed setting the paper size in the printer dialog on Linux systems
    that use the CUPS printing system.
  - Fixed setting a modified attribute value back to the library default
    in case the default value is empty.
  - Fixed overwriting a non-empty attribute default value with an empty value
    in the schematic.
  - Fixed RIPUP of polygons of selected signals in case the command line is
    terminated with ';'.
  - Fixed missing spaces when rendering '-' between <nobr> tags.
  - Fixed displaying the placeholder texts ">DRAWING_NAME", ">LAST_DATE_TIME",
    ">PLOT_DATE_TIME" and ">SHEET" in case a part is smashed.
  - Fixed handling file names that start with a '.' in the PRINT command.
  - Fixed unexpected wire fragments in CAM Processor and PRINT output.
  - Fixed a possible crash in the DRC when handling extremely small arcs.
  - The values for "Catch factor" and "Select factor" can now be entered
    as decimal numbers in the "Options/Set/Misc" menu to allow values less
    than 1.
  - Fixed the description of the palette() function in the online help to
    properly mention the alpha channel of ARGB values.
  - Fixed the description of REAL_EPSILON in the online help.
  - Fixed selecting a group with the alternate grid in the COPY command.
  - Fixed subtracting very small and thin arcs from polygons.
  - Fixed handling UTF-8 characters in the readfile() function when reading
    into a string array.
  - Fixed the DRC to have it check unconnected pads/smds against objects in
    the Dimension layer, as it was the case in version 4.x.
  - Fixed mirroring polygons in packages when dragging the packages in the ADD
    command.
  - Fixed storing relative path names in the project file in case, e.g., a
    project named /abc/def is open and a file named /abc/def-1/some/name
    is edited.
  - Fixed marking the text in the first string entry field in a User Language
    dialog when the dialog is opened.
  - Fixed unwanted flashing of signal when placing a wire in the ROUTE command.
  - Fixed a crash if a CHANGE command is applied to a group containing a
    polygon that is in the calculated state, and that CHANGE causes a
    recalculation of the polygon.
  - Fixed calculating the bounding rectangle of placeholders for global
    attributes.
  - Fixed handling escaped '&' characters in dlgLabel in case there is no
    actual hotkey in the label.

Release notes for EAGLE 5.1.0
=============================

* Platforms:

  - Now setting HKEY_CLASSES_ROOT\Applications\eagle.exe\shell\open\command
    in the Windows registry to allow associating file extensions with the
    EAGLE executable.
  - The installer now uses the User Access Control dialog to request
    Administrator rights when running under a limited user account on Windows
    Vista.

* UPDATE command:

  - Rephrased the online help for 'UPDATE old_library_name = new_library_name',
    to make it clear that the library inside the board/schematic file will be
    renamed, not the external library file.

* CAM Processor:

  - The CAM Processor's GERBER_RS274X driver now generates polygon area fill
    codes when drawing rotated rectangles.

* Miscellaneous:

  - Decimal numbers beginning with a comma are now accepted in the command
    line, provided the locale settings define the comma as decimal delimiter.
  - If a text like >ABC is placed directly in a board or schematic, and there
    is a global attribute with the same name and an empty value, the origin
    cross of that text is now displayed to allow the user to manipulate the
    text.

* Bugfixes:

  - Fixed a crash when using the CAM Processor in command line mode
    (option -X) and having "Always vector font" turned off.
  - Fixed drawing very short lines under Windows and Mac OS X, in case their
    coordinates in pixels result in a zero length.
  - Fixed setting word wrapping in dlgLabel in case the label text contains
    HTML tags.
  - Fixed rendering the '-' character between <nobr>...</nobr> tags.
  - Fixed handling airwires in the ROUTE command after routing part of a
    signal (the remaining airwire reacted on CHANGE WIDTH).
  - Fixed copying and CUT/PASTEing parts with attributes defined at part level.
  - Fixed the User Language function printf() to correctly handle the value
    0x00 and those above 0x7F in binary mode.
  - Fixed defining a GROUP if the last coordinate of the group polygon is equal
    to the first one.
  - Now ignoring faulty window coordinates in eagle.epf and eaglerc files.
  - Fixed running User Language Programs that start with a Byte Order Mark.
  - Fixed a crash in the ADD/REPLACE dialog when adding/replacing from a
    library, closing the editor window, opening the editor window again and
    adding/replacing again using the same library.
  - Fixed positioning windows when opening a project under Linux.
  - Fixed handling the XREF keyword in the LABEL command.
  - Fixed storing color palette values in case they are defined in the
    command line or a script using the SET command.
  - Fixed drawing circles with a solid fill style on Windows and Mac OS X in
    case the width is about as big as the radius.
  - Fixed drawing lines with zero width when zooming far into the drawing.
  - Fixed positioning a dlgMessageBox that contains HTML text.
  - Fixed handling the '@radius' parameter in the WIRE command (and all others
    that accept such a parameter).
  - Fixed updating the library name in the board when replacing a part in the
    schematic and only the library name has changed.
  - Fixed handling minimum clearance values for circles in the Autorouter and
    when processing polygons.
  - Fixed handling the "Use alpha blending" flag when displaying the color
    dialog for white or colored background.
  - Fixed removing the error indicator from the board editor when closing or
    clearing the ERC error list.
  - Fixed handling UTF-8 character constants in ULP files.
  - Fixed displaying tool tips ("bubble help") in the parameter toolbars.
  - Fixed processing keyboard shortcuts in the library editor in case no
    pulldown menu has been opened, yet.
  - Fixed handling 'char' variables in the User Language as 8 bit values.
  - Fixed displaying the root directory in the Control Panel's tree view, in
    case it is part of one of the directory paths.
  - Fixed handling approved errors that have exactly the same signature.
  - Fixed autorouting selected signals in case the net classes define
    particular clearance values between signals that have been selected for
    routing and those not selected.
  - Fixed scrolling the drawing area with the mouse wheel if the "Mouse wheel
    zoom" factor is set to 0.
  - Fixed the default wildcard in the User Language dialog functions
    dlgFileOpen() and dlgFileSave() under Windows. With "*" the Windows file
    dialog doesn't handle *.lnk files correctly, therefore the default
    wildcard is now "*.*" as in previous versions.
  - Fixed graphics distortions when running the Linux version of EAGLE on an
    X11 server that runs on a "big endian" system.
  - Fixed drawing artefacts from the origin cross when moving a gate in a
    device set.
  - Fixed a crash after highlighting a DRC error, switching to another board,
    and then using the DISPLAY command to change the visible layers.
  - Fixed forward annotation in case a new attribute with an empty value is
    added to a part in the schematic, or the value of an existing attribute
    is changed to '' (empty) in the schematic.
  - Fixed false positive DRC errors for round objects in case the actual
    clearance is exactly the same as the minimum clearance.
  - Fixed reference line for net labels when pointing to an arc.
  - Fixed invalid coordinates in data generated by the CAM Processor for
    draw devices (like HPGL plotters) in case of very short lines that result
    in a zero length in machine units.
  - Fixed handling part attributes that overwrite global attributes (the name
    field was disabled) and attributes with an empty value (the value field
    was disabled).
  - Fixed handling bounding rectangles of smashed parts, in case the package
    or symbol contains nothing but placeholder texts.
  - Fixed handling the last value in the Colors parameter of CAM job files.
  - Fixed "File/Save all" so that it saves the project file even if
    "Automatically save project file" is not set.
  - Fixed handling UL_SMD.dx()/.dy() and UL_PAD.diameter() when called with
    a "stop" or "cream" layer in case the smd or pad has the NOSTOP or
    NOCREAM flag set.
  - Fixed deleting local attributes that overwrite global attributes.
  - Fixed changing the value of local attributes that overwrite global
    attributes in case the current value is empty.
  - Fixed splitting wires when moving a wire endpoint onto an other wire.
  - Fixed resolving *.lnk files under Windows in the Control Panel's tree
    view.
  - Fixed displaying status texts in case an object's information contains one
    of the characters '<', '>' or '&'.
  - Fixed using an attribute named VALUE as default value for devices that
    have 'Value On'.
  - Fixed a performance issue in the User Language function status().
  - Fixed displaying the name of the loaded file in the status bar of the
    CAM Processor (it disappeared as soon as the mouse cursor was moved
    over the pull down menu).
  - Fixed handling supply layers in the Autorouter in case a signal that
    has a supply layer is already (partially) routed and the Autorouter is
    run (the wires and vias of such a signal were not "seen" by the
    Autorouter and thus routed again; other signals routed in the same
    Autorouter run may even have overlapped or gotten too close to them).
  - Fixed checking the font and width of texts of smashed elements in the DRC.
  - Fixed an unexpected jump of the group when selecting the group with
    Ctrl+Right in a command after clicking into the drawing area with
    Ctrl+Right without an active command.
  - Fixed the SPLIT command for polygon edges in case the split point is on
    the original wire.

Release notes for EAGLE 5.0.0
=============================

* Platforms:

  - The minimum system requirement on Windows platforms is now Windows 2000,
    XP or Vista.
  - The Mac OS X version of EAGLE no longer requires an X11 server, and
    comes as a "Universal Binary" that runs on PPC and Intel Macs.
  - The Linux version now comes as a a self extracting shell script with a
    setup dialog.
  - The buttons in dialogs are now placed in the sequence suggested by the
    interface guidelines for the particular platform.
  - The Windows version of EAGLE now stores the 'eaglerc.usr' file under
    the directory that is defined by the registry key "HKEY_CURRENT_USER\
    Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\AppData"
    if no environment variable named HOME is defined. If no such file exists
    at the new location, it tries to read it from the old location.

* User interface:

  - When clicking with the right mouse button on an object in an editor window,
    a context specific popup menu is now displayed from which commands that
    apply to this object can be selected.
  - Since the context menu function on the right mouse button interferes
    with the selection of groups, a group is now selected with Ctrl plus
    right mouse button. If you want to have the old method of selecting groups
    back, you can can add the line

    Option.ToggleCtrlForGroupSelectionAndContextMenu = "1"

    to the ~/.eaglerc file. This will allow
    selecting groups with the right mouse button only and require Ctrl plus
    right mouse button for context menus.
  - The context specific object menu contains an entry named "Properties",
    which allows to display (and modify some of) the object's properties.
  - The schematic editor now contains a thumbnail view of all sheets.
    Clicking on a thumbnail switches to that sheet. Drag&drop in the
    thumbnail view can be used to reorder the sheets, and the context
    menu allows you to add and delete sheets.
  - The attributes of parts in the board and schematic can now be selected
    by the commands that allow selecting objects with names by entering the
    concatenation of part name and attribute name, as in

    MOVE R5>VALUE

  - The context menu of package variants in the library editor now contains
    an option 'Edit Package' to quickly access the package of the selected
    variant.
  - The context menu of a gate in the device editor now contains an option
    'Edit Symbol' to quickly access the symbol of the selected gate.
  - Renaming an item in the Control Panel is no longer done by clicking
    into the text of an already selected item (this has caused too many
    unintended activations of the editing mode). Use the context menu instead.
  - The positions of all open Windows can now be stored using
    "Options/Window positions" in the Control Panel. Newly opened windows of
    the same type will then be positioned at the same places.
  - Status messages and User Guidance are now displayed simultaneously
    in the status bar of the editor window.
  - If the pulldown menu in an editor window is hidden, the Alt+X key no
    longer leaves the program. To have this functionality even with the
    pulldown menu hidden, use "ASSIGN Alt+X Quit;".
  - When switching between the sheets of a schematic, the current zoom level
    is now saved.
  - Panning the editor window with the center mouse button no longer requires
    to press the Shift key to exceed the area defined by the scrollbars.

* User Language:

  - Entries in a dlgListView are now displayed in multiple lines if they
    contain '\n' characters.
  - The User Language function UL_POLYGON.contours() now supports a second
    parameter that allows looping through 'positive' and 'negative'
    polygons separately.
  - The User Language function UL_CLASS.clearance now accepts a parameter
    that allows retrieving the clearance between two net classes.
  - The User Language objects UL_ELEMENT and UL_INSTANCE now have a new
    member function 'smashed'.
  - Include statements in ULPs that contain relative paths, as in

    #include "dir/file.ulp"

    are now searched for within the directories entered under
    "Options/Directories/User Language Programs".
  - The new User Language function timems() delivers the time in milliseconds
    since the start of the ULP.
  - The new User Language function ingroup() can be used to check whether an
    object is within the current group.
  - The new User Language function system() can be used to execute external
    programs.
  - The User Language objects UL_ELEMENT, UL_INSTANCE and UL_NET have new
    data members 'column' and 'row' which return the location within a
    drawing frame.
  - The User Language member functions UL_ELEMENT.smashed and
    UL_INSTANCE.smashed now accept an optional parameter text name that allows
    you to query whether there is a smashed parameter text by that name.
  - In the User Language the labels of a segment (both bus as well as net)
    can now be accessed through the new object type UL_LABEL, which is
    generated by the new loop member UL_SEGMENT.labels(). The old way of
    accessing labels through UL_SEGMENT.texts() is now deprecated and won't
    handle cross-reference labels correctly. The actual text of a label is
    now returned by UL_LABEL.text.
  - The User Language object UL_SCHEMATIC has a new member 'xreflabel',
    which returns the format string used to display cross-reference labels.
  - The User Language object UL_SCHEMATIC has a new member 'xrefpart',
    which returns the format string used to display part cross-references.
  - The User Language object UL_INSTANCE has a new loop member named 'xrefs',
    which loops through the gates that represent the contact cross-reference.

* Screen drawing:

  - Drawing on screen no longer uses "raster OPs". The individual layers
    are now drawn using "alpha blending". Each color (except for the
    background color, which is always opaque) can have its own alpha value,
    which defines how transparent it is. A value of 0 means the color is
    fully transparent (i.e. invisible), while 255 means the color is
    completely opaque. When reading an eaglerc file from an older version,
    the alpha values of all colors are initialized to a default value if
    all palette entries have an alpha value of 0.
    You can use the script 'defaultcolors.scr' to set the colors to the
    new defaults.
    When printing, the alpha values are always set to 255.
  - Since the layer colors no longer use additive mixing, but rather use
    alpha blending, the default background color in the layout editor
    window has been changed to white.
  - If you want to have the old raster OP behavior on black background,
    you can uncheck the "Use alpha blending" box in the "Options/Set/Colors"
    dialog. In that case the alpha value defined for the colors is ignored
    when using a black background, and colors are mixed using an OR function.
  - The colors above index 15 in the color palettes are now by default
    initialized with a medium gray value.

* User defined Attributes:

  - In a library, devices can now have "attributes", which are arbitrary
    user definable "name/value" pairs. Attributes are related to the individual
    "technology" variants of a device.
  - The new command ATTRIBUTE can be used to define the attributes of a given
    technology variant (see "Help/Editor commands/ATTRIBUTE" for details).
  - The new User Language object UL_ATTRIBUTE can be used to access attributes
    (see "Help/User Language/Object Types/UL_ATTRIBUTE" for details).
  - The User Language objects UL_PART, UL_INSTANCE, UL_ELEMENT and UL_DEVICE
    have a new loop member named 'attributes()'.
  - The User Language objects UL_PART and UL_ELEMENT have a new member function
    named 'attribute()', which can be used to query a part for the value of a
    given attribute.
  - The User Language object UL_ELEMENT has a new member function named
    'attribute()', which can be used to query an element for the value of a given
    attribute.
  - In a 'symbol' or 'package' drawing, any text that starts with a '>' character
    and matches an attribute name of the actual part or element will be replaced
    by the attribute value in the schematic or board, respectively (see
    "Help/Editor commands/TEXT" for details).
  - The SMASH command now smashes all texts in the symbol or package that start
    with '>' and match an actual attribute name, and assigns them as attributes
    to the part (except for the traditional placeholder texts like ">NAME",
    ">VALUE" etc., which are treated like before).
  - Boards and schematics can now have global attributes.
  - The User Language objects UL_BOARD and UL_SCHEMATIC have a new loop member
    named 'attributes()', which can be used to loop through the global
    attributes.

* Locking the position of a part:

  - The new command LOCK can be used to lock the position of a part in the
    board.
  - The origin of a locked part is displayed as an 'x' to have a visual
    indication that the part is locked.
  - The User Language object UL_ELEMENT has a new data member 'locked', which
    return the setting of the lock flag.

* Popup menus for buttons:

  - Various buttons in the editor window now have a popup menu that contains
    a list of recently used items or user defined aliases (depending on the
    button type). These buttons are marked with a small black arrow at the
    bottom right corner of their icon. To access this list, click on the
    button and hold the mouse button pressed until the list pops up, or
    click on the button with the right mouse button.
  - The button popup menus for DISPLAY, GRID and WINDOW contain two special
    entries: "Last" restores the previous settings, and "New..." queries the
    user for a new alias name and stores the current settings under that name.

* Aliases for command parameters:

  - The DISPLAY, GRID and WINDOW commands now have an extended syntax that
    allows the user to define "aliases" for certain parameter settings.
    The syntax to handle these aliases is:

    CMD = <name> <parameters>

        Defines the alias with the given <name> to expand to the given
        <parameters>. The <name> may consist of any characters, except blank
        or semicolon, and is treated case insensitive.

    CMD = <name> @

        Defines the alias with the given <name> to expand to the current
        parameter settings of the command.

    CMD = ?

        Asks the user to enter a name for defining an alias for the current
        parameter settings of the command.

    CMD = <name>

        Opens the dialog of the command and allows the user to adjust the set
        of parameters that will be defined as an alias under the given <name>.
        In case of the WINDOW command a rectangle can be defined that
        represents the desired window area.

    CMD = <name>;

        Deletes the alias with the given <name>.

    CMD <name>

        Expands the alias with the given <name> and executes the command with
        the resulting set of parameters. The <name> may be abbreviated and
        there may be other parameters before and after the alias (even other
        aliases). Note that aliases have precedence over other parameter
        names of the command.

    Example:

        DISPLAY = MyLayers None Top Bottom Pads Vias Unrouted

        Defines the alias "MyLayers" which, when used as in

        DISPLAY myl

        will display just the layers Top, Bottom, Pads, Vias and Unrouted.
        Note the abbreviated use of the alias and the case insensitivity.

* Inverted names:

  - The names of inverted ("active low") signals can now be displayed with
    a bar over the text ("overline"). To do so, the name needs to be preceded
    with an exclamation mark ('!'), as in

      !RESET

    which would result in
      _____
      RESET

    This is not limited to signal names, but can be used in any text. It is
    also possible to overline only part of a text, as in

      !RST!/NMI
      R/!W

    which would result in
      ___
      RST/NMI
        _
      R/W

    Note that the second exclamation mark indicates the end of the overline.
    There can be any number of overlines in a text. If a text shall contain
    an exclamation mark that doesn't generate an overline, it needs to be
    escaped by a backslash. In order to keep the need for escaping exclamation
    marks at a minimum, an exclamation mark doesn't start an overline if it
    is the last character of a text, or if it is immediately followed by a
    blank, another exclamation mark, a double or single quote, or by a right
    parenthesis, bracket or brace. Any non-escaped exclamation mark or comma
    that appears after an exclamation mark that started an overline will end
    the overline (the comma as an overline terminator is necessary for busses).
  - When updating files from older versions, a backslash in any pin, net, bus
    or signal name will be replaced with the appropriate exclamation mark.
    Any backslash or exclamation mark in a normal text will be escaped by
    preceding it with a backslash as necessary, since the backslash is now a
    real escape symbol in texts.

* Drawing frame:

  - The new command FRAME can be used to draw a frame with numbered columns
    and rows.
  - The new User Language object UL_FRAME can be used to access the data
    of a drawing frame.
  - The User Language objects UL_ELEMENT, UL_INSTANCE and UL_NET have new
    data members 'column' and 'row' which return the location within a
    drawing frame.
  - The drawing frames in the "frames" library now use this new frame object.

* Cross-reference labels:

  - A "label" on a net segment now has a new property named "xref", which
    puts it into "cross-reference" mode. In this mode it will be displayed
    according to the "Xref label format" string defined under
    "Options/Set/Misc", and will show its text at a different offset from
    its origin, so that it can be placed nicely at the end of a net wire.
  - A cross-reference label that is placed on the end of a net wire will
    connect to the wire so that the wire is moved with the label, and vice
    versa.
  - The format of cross-reference labels can be defined in the
    "Options/Set/Misc" dialog under "Xref label format". See
    "Help/Editor Commands/LABEL" for a list of placeholders that can be
    used here.
  - The User Language object UL_SCHEMATIC has a new member 'xreflabel',
    which returns the format string used to display cross-reference labels.
  - The SET command has the new parameter XREF_LABEL_FORMAT, which can
    be used to define the cross-reference label format string.
  - The CHANGE command has a new option XREF that can take the values OFF
    and ON, and can be used to change whether a label is "plain" or
    "cross-reference".
  - The LABEL command has the new option XREF to define a cross-reference
    label. There are also two new icons in the parameter toolbar to set this
    option.
  - In the User Language the labels of a segment (both bus as well as net)
    can now be accessed through the new object type UL_LABEL, which is
    generated by the new loop member UL_SEGMENT.labels(). The old way of
    accessing labels through UL_SEGMENT.texts() is now deprecated and won't
    handle cross-reference labels correctly. The actual text of a label is
    now returned by UL_LABEL.text.

* Part cross-reference:

  - The new text variable '>XREF' can be used in a symbol drawing to display
    a cross-reference to the MUST gate of the device this symbol is used in.
    A typical application for this are the contacts of a relay, where the
    '>XREF' text variable would display the frame coordinates of the relay's
    coil.
  - The format of part cross-references can be defined in the
    "Options/Set/Misc" dialog under "Xref part format". See
    "Help/Editor Commands/TEXT" for a list of placeholders that can be
    used here.
  - The SET command has the new parameter XREF_PART_FORMAT, which can
    be used to define the part cross-reference format string.
  - The User Language object UL_SCHEMATIC has a new member 'xrefpart',
    which returns the format string used to display part cross-references.

* Contact cross-reference:

  - EAGLE can now automatically generate a contact cross-reference, which is
    mainly used for relay coils and contacts in electrical schematics.
  - The contact cross-reference is generated for the first MUST gate in a
    part, and will display all other gates that have an '>XREF' text variable
    in their symbol drawing. The MUST gate is typically the coil of a relay,
    while the other gates are the contacts.
  - The contact cross-reference is displayed at the same X coordinate as the
    MUST gate, and at the Y coordinate defined by a text variable with a
    value of '>CONTACT_XREF'. This text can be placed either in a frame
    symbol, or directly on the schematic sheet drawing. The first one
    encountered will be used. If no such text is found, no contact
    cross-reference will be generated.
  - The User Language object UL_INSTANCE has a new loop member named 'xrefs',
    which loops through the gates that represent the contact cross-reference.

* ADD command:

  - The syntax of the ADD command has been changed to allow using libraries
    with blanks in their file name. Note that now the device, package or
    symbol name always has to come first.

* ASSIGN command:

  - On the Mac the ASSIGN command now knows the "Cmd" modifer key.

* BOARD command:

  - The BOARD command now accepts a parameter that defines the raster in
    which to place the parts when generating the board, as in

      BOARD 5mm

    which would place the parts in a 5 millimeter raster (default is 50mil).
    The number must be given with a unit, and the maximum allowed value
    is 10mm.

* CHANGE command:

  - The CHANGE command now selects only objects that actually possess the
    property that shall be changed.
  - When selecting an object with the CHANGE command, that object is now
    flashed to indicate the change to the user.
  - CHANGE LAYER now also works with a group.
  - The new CHANGE option DISPLAY can be used to change the display mode of
    an attribute.
  - The options in the CHANGE popup menu are now sorted alphabetically.
  - CHANGE TEXT now accepts the new text on the command line and allows it
    to be applied to any number of text objects or the current group.
  - The CHANGE command has a new option XREF that can take the values OFF
    and ON, and can be used to change whether a label is "plain" or
    "cross-reference".

* CLASS command:

  - The minimum clearance between signals of different net classes can
    now be defined in a matrix, allowing you to define separate individual
    values for any combination of two net classes, as well as within the
    same net class (see "Help/Editor Commands/CLASS").

* COPY command:

  - The COPY command can now copy a group by clicking with the right mouse
    button.

* DELETE command:

  - The DELETE command can now select parts, pads, smds, pins and gates by
    name. The option SIGNALS to delete all signals in a board still exists,
    so if a part with the name SIGNALS shall be deleted, its name must be
    written in single quotes.

* DISPLAY command:

  - The DISPLAY command no longer automatically turns related layers on or off
    when used with the t/bPlace or Symbols layer.
    The parameter

    Option.DisplayRelatedLayers = "0"

    to the ~/.eaglerc file is now obsolete.
  - The DISPLAY command now supports "aliases" for parameter settings (see
    "Aliases for command parameters").
  - The DISPLAY command has a new option "Last", which restores the settings
    as they were before the previous DISPLAY command.

* DRC command:

  - The DRC now reports wires in supply layers as errors if they are part of
    a signal that is connected to any pad or smd.
  - The DRC now always checks all signal layers, no matter whether they are
    currently visible or not.
  - The DRC now reports an error if an object in the t/bPlace, t/bNames or
    t/bValues layer overlaps with an object in the t/bStop layer (provided
    these layers are active when the DRC is run).
  - The DRC no longer reports objects in the Top or Bottom layer that
    intersect with objects in the t/bRestrict layer in the same package.
  - The DRC now distinguishes between clearance violations and actual
    overlaps of copper between different signals.
  - The Design Rules dialog now marks the name of the Design Rules with an
    asterisk if they have been modified.

* EDIT command:

  - The EDIT command can now insert and reorder schematic sheets.
  - Switching between sheets in a schematic no longer clears the undo
    buffer. Adding, removing or reordering a sheet, however, still clears
    the undo buffer.

* ERC command:

  - The results of the Electrical Rule Check (ERC) are now listed in a dialog,
    where clicking on a list item graphically marks the result in the
    editor window (if applicable).
  - The parameter Erc.SuppressAdditionalWarnings in the ~/.eaglerc file
    is obsolete. Errors and warnings are now presented separately in the
    ERRORS dialog.
  - The ERC now checks for parts with user definable values that have no
    actual value.
  - The ERC now warns about unconnected input pins of uninvoked gates.
  - The ERC now warns if a net has more than one segment, and any of these
    doesn't indicate that it is part of a larger net (like, for instance,
    though a label, bus or supply pin).
  - The ERC now checks whether the name of a net segment that is connected to
    a bus is actually contained in that bus.
  - The ERC now warns if a pin is connected to a net, but there is no visisble
    indication of the connection (like a net wire, junction or another pin).

* ERRORS command:

  - If the ERRORS command is entered without having run an ERC or DRC
    before, the appropriate check is now started first automatically.
  - The ERRORS dialog now allows the user to mark messages as "approved",
    which suppresses the error indicator in the editor window (see
    "Help/Editor Commands/ERRORS").

* EXPORT command:

  - The default output format for EXPORT IMAGE is now PNG on all platforms
    (on Windows it used to be BMP).

* GRID command:

  - The GRID command now supports "aliases" for parameter settings (see
    "Aliases for command parameters").
  - The GRID dialog no longer has a "Last" button, because this functionality
    is now implemented through the command button popup menu. Click on the
    GRID button with the right mouse button to access the "Last" function.

* GROUP command:

  - The GROUP command now has a new option ALL, which can be used to define
    a group that includes the entire drawing area.
  - The GROUP command can now be used with the Shift and Ctrl key to extend
    the group or toggle the group membership of individual objects,
    respectively.

* HELP command:

  - Since Windows Vista doesn't support the Windows Help file format any more,
    EAGLE now uses the same HTML formatted help on all platforms.
  - The Help window now has a "Find" bar where you can enter a text that will
    be used to filter all help pages, so that only those that contain the
    text will be shown.
  - The help texts are now stored in one single HTML file for each language.

* INFO command:

  - The INFO command can now select parts, pads, smds, pins and gates by name.
  - The INFO command now brings up the same dialog as the Properties
    option in the context menu of drawing objects, and also allows changing
    properties.

* INVOKE command:

  - If an already invoked gate is selected in the INVOKE dialog, the default
    button changes to "Show", and a click on it zooms the editor window in on
    the selected gate, switching to a different sheet if necessary.

* LABEL command:

  - The LABEL command has the new option XREF to define a cross-reference
    label.
  - The LABEL command now accepts an 'orientation' parameter to define the
    orientation of the label textually.

* MIRROR command:

  - The MIRROR command now also works with rectangles.
  - The MIRROR command can now select parts, pads, smds and pins by name.

* MOVE command:

  - The MOVE command can now select parts, pads, smds, pins and gates by name.
  - The MOVE command can now move a group of objects from one schematic sheet
    to an other, without modifying the board.

* NAME command:

  - The NAME command can now rename an individual polygon, which moves the
    polygon from one signal to another.
  - The NAME command can now select parts, pads, smds, pins and gates by name.

* PACKAGE command:

  - The PACKAGE command, when used in the board or schematic editor, now
    behave exactly like CHANGE PACKAGE.

* PRINT command:

  - The PRINT command has a new option named FILE, which can be used
    to print into a file.
  - The PRINT command can now create PDF (Portable Document Format)
    files. These files are fully searchable for any (non-vector-font)
    texts they contain.
  - The PRINT dialog now has a preview of the printed object.
  - The scale factor in the PRINT command is now limited to the range
    0.001...1000.
  - The calibration values for printing are now limited to the range 0.1...2.
  - The border values as delivered by the printer driver are now rounded
    up to the next higher multiple of 0.1mm.

* RATSNEST command:

  - The RATSNEST command now ignores wires in supply layers.
  - The RATSNEST command can now be called with signal names to calculate
    only the airwires and polygons of selected signals.
  - The RATSNEST command can now hide the airwires of selected signals.
  - The RATSNEST command now displays the name of the currently processed
    signal in the status line.
  - The RATSNEST command now generates airwires for objects inside hatched
    polygons that would "fall through" the hatch lines. Thermal and annulus
    rings inside a hatched polygon that do not have solid contact to any of
    the polygon lines are no longer generated.

* REPLACE command:

  - The REPLACE command now works in the schematic, too.

* RIPUP command:

  - The RIPUP command now has a new option '@' to allow ripping up all
    or selected polygons.
  - The RIPUP command can now handle wildcards in signal names.

* ROTATE command:

  - The ROTATE command can now select parts, pads, smds and pins by name.

* ROUTE command:

  - The "Via-Layers" combo box has been removed from the parameter toolbar
    of the ROUTE command, since the ROUTE command always automatically
    determines the minimum necessary via to make a connection.
  - The ROUTE command can now select airwires by signal name.
  - The ROUTE command no longer allows routing in supply layers.
  - The ROUTE command with the Ctrl key pressed can now also start routing at
    a via.

* SET command:

  - The new SET variable CATCH_FACTOR defines the distance from the cursor up
    to which objects are taken into account when clicking with the mouse (see
    "Help/Editor Commands/SET").
  - The SET variable GRID_REDRAW is now obsolete, but is still tolerated
    for compatibility.
  - The SET command can now configure the popup menus for values of Isolate,
    Spacing and Miter by setting the Isolate_Menu, Spacing_Menu and Miter_Menu
    arrays.
  - The SET command has the new parameter XREF_LABEL_FORMAT, which can
    be used to define the cross-reference label format string.
  - The SET command has the new parameter XREF_PART_FORMAT, which can
    be used to define the part cross-reference format string.

* SHOW command:

  - The SHOW command now works with wildcards.
  - The SHOW command now highlights the individual nets belonging to a bus
    if a bus is selected.
  - The SHOW command now accepts a list of arguments and highlights all the
    matching objects.
  - The SHOW command with the name of an individual instance (like IC1A,
    which is the gate A of part IC1) now shows exactly that instance.
  - The SHOW command now uses the Ctrl key to toggle the highlight status
    of the selected object, which also allows more than one object to be
    highlighted at the same time.

* SMASH command:

  - The SMASH command can now select parts by name.

* SPLIT command:

  - The SPLIT command now automatically picks up the next wire segment when
    placing a splitted wire. That way an already routed wire can be re-routed
    more easily.
  - The SPLIT command now also works with the "freehand" wire bend style.

* TECHNOLOGY command:

  - The TECHNOLOGY command, when used in the board or schematic editor, now
    behaves exactly like CHANGE TECHNOLOGY.

* WINDOW command:

  - The WINDOW command now supports "aliases" for parameter settings (see
    "Aliases for command parameters").
  - The WINDOW command has a new option "Last", which restores the settings
    as they were before the previous WINDOW command.

* WIRE command:

  - Starting a WIRE with the Ctrl key pressed now snaps the starting point
    of the new wire to the coordinates of the closest existing wire. This
    is especially useful if the existing wire is off grid. It also adjusts
    the current width, layer and style to those of the existing wire.
    If the current bend style is 7 ("Freehand"), the new wire will form a
    smooth continuation of the existing wire.

* CAM Processor:

  - The output file name in the CAM Processor can now be defined using
    several "placeholders" (see "Help/Generating Output/CAM Processor/Output
    File"). The old variant of using ".ext" or ".*#" still works, but is
    obsolete.
  - The photoplotter and drill station info files now start with the fixed
    string "Generated by EAGLE CAM Processor", followed by the EAGLE version
    number.

* Autorouter:

  - The autorouter now displays in the status line the name of the currently
    processed signal and the time (in seconds) it has spent on a particular
    connection in case it takes longer than 5 seconds.

* Text editor:

  - The "Find&Replace" dialog in the text editor now has a "Prompt before
    Replace" option.
  - The keyboard shortcuts in the text editor now follow the platform
    specific standards.

* Polygons:

  - When processing signal polygons, round objects are subtracted in such a
    way that the resulting error does not exceed 0.05mm (50 micron), which
    means that the distance between an object and a generated polygon edge
    may be up to 0.05mm larger than the value defined for the clearance or
    isolation, respectively. This is done to keep the number of polygon
    edges reasonably low.
  - Signal polygons in "outline" mode are now displayed with dotted wires,
    so that they can be distinguished from other wires.
  - Fixed calculating polygons in signals that also contain other wires, vias,
    pads or smds. If none of these other objects is on the same layer as the
    polygon, the polygon was actually calculated instead of being shown as
    outlines.
    IMPORTANT NOTE: This fix may cause polygons that have previously been
    calculated to be not calculated any more, and thus be missing from the
    printout or CAM data! These polygons were electrically "floating", because
    they were not connected to any other part of the same signal.

* Miscellaneous:

  - The endings of wires and arcs with cap=round, as well as 'long' and
    'offset' pads, are now displayed round on all devices (no more octagonal
    approximation).
  - GROUP/MOVE now preserves the connectivity between wires, airwires and vias,
    even if one of the related layers is not currently displayed.
  - Increased the maximum nesting level in config files to avoid problems with
    autorouter control files that define a large number of optimizing passes.
  - The semicolon (';') is now no longer accepted in object names, to avoid
    problems with parsing command lines.
  - The Printer.InternalRendering parameter in the ~/.eaglerc file
    has no meaning any more. Printing under Windows should now always work.
  - Trailing whitespace following the continuation character '\' in script
    files is now ignored.
  - Blanks in layer names are no longer accepted.
  - Selecting objects with only a single selection point (like pads, vias etc.)
    has been improved.
  - The different language versions are now all installed at once.
    Language specific files are distinguished by adding the two letter
    language code to their name, as in README_en. The DESCRIPTION files
    in directories hold the language specific texts between HTML tags
    <language en>...</language>. CAM Processor and Design Rules files
    separate different language versions of their parameters by adding,
    e.g., [en] to the parameter names, as in Name[en]="Component side".
  - The positions of the window splitters in the library editor are now
    stored separately for each drawing type.
  - If a layer name or a parameter alias entered by the user fully matches,
    it is now preferred over a partially matching one. For instance, if there
    are two layers named "Abcdef" and "Abc" (in this squence) and the user
    enters "Ab", then the first matching layer "Abcdef" will be selected.
    If the user enters "Abc", the second, fully matching layer is selected.
  - Coordinates and sizes (like width, diameter etc.) can now be given with
    units, as in 50mil or 0.8mm. If no unit is given, the current grid unit
    is used.
  - The info string for parts (as displayed by various command, like SHOW and
    MOVE) now also lists the part's value in the status line.
  - Entries in the "Open recent" lists are now only added when a file is
    actually loaded from or saved to disk.
  - When moving a net or bus label, a line is now drawn to the closest point
    of the segment this label belongs to.
  - If a command displays a progriess bar, the window title now displays the
    current percentage.
  - Changed the term "Rich Text" to HTML, to avoid confusing it with a
    text format from Microsoft.
  - In order to allow easier selection of circles that have a a large width
    (as compared to their radius), circles can now be selected not only at
    their radius, but also at their inner and outer circumference.
  - The Professional Edition can now handle up to 999 schematic sheets.
  - EAGLE can now automatically check if there is a new version available
    on the CadSoft server. You can explicitly run this check through
    "Help/Check for Update" from the Control Panel.
  - The Projects path under Windows now also contains "$HOME\eagle" to offer
    the user a default location for saving own projects.
  - The new command line option -C can be used to start EAGLE with a
    command string that will be executed in the editor window (see
    "Help/Command Line Options").
  - Centering on errors now also works if the error is close to the edge
    of the drawing.
  - Decimal numbers can now be entered with a comma as the decimal separator
    (if the locale settings allow this). It is strongly recommended, though,
    to use the 'dot' as the decimal separator when writing scripts or ULPs
    that return EAGLE commands through the exit() function, otherwise they
    might not work on other systems.
  - The device editor now displays origin crosses at the individual gates'
    origins.
  - The new schematic layers "Info" (97) and "Guide" (98) can be used for
    general information and guide lines, respectively. The latter is mainly
    for electrical schematics, to help properly align relay coils etc.

* Bugfixes:

  - Fixed a possible loss of connectivity if a wire disappears (because
    both ends coincide) after moving a group, and that same group is moved
    again.
  - Fixed a possible crash when moving a group that contains supply pins
    that get connected to a net with a different name which is also contained
    in the group.
  - Fixed a possible unjustified "close but unconnected wires" error in the ERC.
  - Fixed checking for '$' at the beginning of the layer name in the
    "Change layer properties" dialog.
  - Fixed handling empty texts in DRC and polygon subtraction.
  - The LAYER command can no longer switch to a layer that is not contained
    in the layer menu.
  - Fixed removing the currently edited device set from within a script.
  - Fixed handling layer names case insensitively in the DISPLAY dialog.
  - Fixed a problem with temporary files in case the same user runs more
    than one instance of EAGLE on the same computer.
  - Fixed handling HTML tags in error messages in the status line of the text
    editor.
  - Fixed assigning to UL_* objects for "virtual" objects like the wires of
    a calculated polygon of a text with vector font.
  - Fixed updating files from versions before 4.0 (sometimes duplicate
    library names were not detected properly in old files).
  - The #require directive in the User Language didn't handle release and
    revision numbers above and including 50 correctly.
  - Fixed handling coordinate parameters in the DRC command.
  - Fixed handling circles with width/2 > radius in the Autorouter.
  - Preventing the autorouter from setting vias at places where this is not
    possible when routing boards with a single signal layer and a supply layer.
  - Fixed the library update in case the library no longer contains package
    variants that are present, but unused in the schematic.

Release notes for EAGLE 4.16r2
==============================

* Bugfixes:

  - Fixed generating pixmaps that are much longer in one dimension with the
    EXPORT IMAGE command.
  - Fixed handling the net class when renaming a net segment to a new name.
  - Fixed a crash when clicking into the empty area of the Technologies
    dialog.
  - Fixed an 'Internal polygon error 73' when zooming far in on a board that
    contains smds with a roundness other than 0.

Release notes for EAGLE 4.16r1
==============================

* Bugfixes:

  - Fixed handling '\' in UNC program file name under Windows XP in case the
    program is installed on a server.
  - Fixed handling the ESCape key in ULPs with nested dialogs.
  - Fixed handling the program file name under Windows if it starts
    with ".\".
  - Fixed handling German umlauts in the User Language functions strupr(),
    strlwr(), toupper() and tolower() under Windows and Mac OS X.
  - Fixed setting the current item in the Control Panel's tree view when
    drag&dropping a package into a library in case there is also a device
    set with the same name.
  - Fixed unexpected airwires in case an open Pwr pin is connected to a net
    with the same name, or a Supply pin with the same name is placed on an
    open Pwr pin.
  - Fixed printing rotated or mirrored texts under Linux and Mac OS X.
  - Fixed handling upper/lowercase when licensing under Windows on a server.
  - Fixed handling the highest byte of the Palette values in the eaglerc
    file.
  - Fixed handling polygons with only two edges, in case one of them is
    an arc.

Release notes for EAGLE 4.16
============================

* Bugfixes:

  - Fixed CUT/PASTE of net classes (only the first two were actually pasted).
  - Fixed handling library name after "Save as" (was wrong in Description
    editor).
  - Fixed CHANGE PACKAGE/TECHNOLOGY in case a device contains more than 254
    technologies (which was possible due to a missing check in the technology
    dialog of the device editor).
  - Fixed the technology dialog in the device editor, so that it doesn't
    accept more than 254 technologies per package variant.
  - Fixed a possible data corruption when a supply pin overwrites a net name.
    Leftover pin references that may have been caused by such a data
    corruption are automatically deleted during the next library update.
  - Fixed an unexpected "Cancel" button in some message boxes.
  - Fixed generating annulus symbols for pads that have the NOTHERMALS
    flag set.
  - Fixed faulty splitting of arcs near their end points.
  - Fixed a rounding error in handling rectangle coordinates and wire
    curves.
  - Fixed moving mirrored packages with polygons in a board (polygons were
    displayed in the wrong layer).
  - Fixed faulty "Change Class..." lines in the EXPORT NETLIST output from
    a schematic.
  - Fixed a problem with getting the program directory name under Windows XP
    if the console version of EAGLE was started without a full path name.
  - Fixed a possible crash when canceling the console version of EAGLE with
    Ctrl+C under Windows XP.
  - Fixed loading a text file on Windows XP from a non-Windows server (the
    file was not editable even though it was writable in the file system).
  - Fixed storing Undo data when doing a library update where the sequence
    of gates had changed in a device. If doing UNDO followed by REDO after
    such an update, some of the part's gates may have been swapped.

Release notes for EAGLE 4.15
============================

* Bugfixes:

  - The CHANGE PACKAGE command now updates the package in the board with the
    version from the schematic, in order to avoid problems in case a REPLACE
    has been done in the board while the schematic was closed.
  - Fixed handling access to the individual characters of a string in ULPs on
    Mac OS X.
  - The COPY command now updates the package in the board with the version
    from the schematic _before_ actually adding the copied part, in order to
    avoid problems in case a REPLACE has been done in the board while the
    schematic was closed.
  - The library update now reports a modification to the board even if it was
    just the renaming of some packages due to a previous REPLACE with the
    schematic closed.
  - Fixed handling empty strings in dlgListView.
  - Fixed clearing the selection of a dlgListView.
  - Fixed setting user defined default Design Rules when loading an existing
    library from within a project.
  - Fixed an extra line that appeared when closing a group with the right
    mouse button in case the group was empty.
  - Fixed a possible crash in UL_WIRE.pieces().
  - Fixed cursor positioning after an error message regarding a loop member
    in a ULP.

Release notes for EAGLE 4.14
============================

* CAM Processor:

  - Increased resolution of EXCELLON driver to 1/10000 inch.
  - Automatically generated drill codes are now sorted by drill size.

* User Language:

  - The User Language object UL_PIN has a new data member 'net' which
    returns the name of the net the pin is connected to.

* Bugfixes:

  - Fixed an unjustified ripup of wire segments when connecting a pin or net
    segment to a supply net that consists of more than one segment.
  - Fixed the progress display in case a script is called from a ULP through
    its exit() function.
  - Fixed setting a via in the ROUTE command if the placed wire coincides with
    an existing wire after a layer change.
  - Fixed a possible crash when copying a device set from one library to
    another.
  - Fixed handling '>SHEET' in ULPs (the fix in version 4.13r1 was broken).
  - Fixed defining a group that contains vias in case the color of the Vias
    layer has been set to 0.
  - Fixed refreshing all signal layers if the Pads or Vias layer is activated
    and has the color 0.
  - Fixed UL_CONTACT.signal in case it is used in a UL_PART context.
  - Fixed drawing arcs with a width of one pixel when zooming in.
  - Fixed handling unsorted dlgListView objects in User Language Programs
    (the items were in reverse order).
  - Fixed an unjustified "missing return value" error message in case a User
    Language Function is terminated through the exit() function.
  - Fixed handling arrays of UL_* objects in User Language Programs.
  - Fixed handling eagle.key in case the program was started using an UNC path
    name under Windows (you may be asked for your license.key file when you
    first run this version under Windows; users of the Freeware edition should
    delete the file 'eagle.key' from their EAGLE binary directory before
    starting EAGLE, to have it automatically offer the Freeware license again).
  - Fixed the ASSIGN command (if the very first ASSIGN was given in the command
    line, all default key assignments were deleted).
  - Fixed handling assigned keys that are mapped to comletely written commands
    that appear in one of the pulldown menus.
  - Fixed the CLASS command in case the name of the net class is given before
    the number.
  - Fixed displaying mirrored texts in schematics after pasting from a board.
  - Fixed handling 'char' variables in ULPs on Mac OS X.
  - Fixed a spurious '%n' in the *.cam files that was introduced in version
    4.13r1.

Release notes for EAGLE 4.13r1
==============================

* DRC command:

  - The "Stop after ... errors" parameter has been removed from the "Misc"
    tab of the Design Rules dialog. This parameter has sometimes lead to
    boards not being tested completely, without people noticing the
    "DRC: Stopped after xx errors" status message, which indicated that the
    DRC was not completely finished.
    The 'maxErrors' parameter in *.dru files is still accepted, but has no
    more meaning. A board file that is created with this version of EAGLE will
    have the 'maxErrors' parameter set to 999999, so that an older version that
    loads this file will perform a full DRC.

* Miscellaneous:

  - Now the default key macros are assigned only if no key assignments exist.
  - If a library causes an error message when loading it in the ADD command,
    it will now automatically be removed from the list of used libraries.
  - Improved the click&drag detection in case of an object selection in a
    densely populated area.
  - The libstdc++ library is now linked statically under Linux to avoid
    problems with incompatiple versions.

* Bugfixes:

  - Fixed deleting a blocked wire if Cmd.Delete.WireJointsWithoutCtrl is set.
  - Fixed handling a drill rack file name in an existing Excellon CAM job
    when switching to a different device.
  - Fixed a possible "internal polygon error 73" when drawing a very wide
    or very high rectangle at a large zoom level.
  - Fixed drawing rectangles and circles (they were drawn 1 editor unit too
    small).
  - Fixed handling CUT/PASTE of partially selected polygons in symbols and
    packages.
  - Fixed handling variable names in ULPs that are the same as an object member
    name within a member function that requires an index.
  - Fixed reporting missing apertures in the GERBER device for rotated, non
    round pads and smds in case of aperture emulation being turned off.
  - Fixed calculating the surrounding rectangle after editing a symbol (bug
    was introduced in 4.12r06).
  - Fixed resetting the signal name after drawing a polygon.
  - Fixed a possible crash in the ROUTE command when placing a wire and an
    error message about not being able to set a via pops up, and while that
    message is on screen, the editor window had to be refreshed (either
    because the error message has been moved or some other window has
    obstructed the editor window).
  - Fixed handling '>SHEET' in ULPs.
  - Fixed filling large rotated rectangles in the CAM Processor for devices
    like GERBER.
  - Fixed an unjustified DRC width error for very short arcs with round endings.
  - Fixed handling directory delimiters for $HOME and $EAGLEDIR under Windows
    to make sure directory names are always separated by forward slashes ('/')
    inside ULPs in order to make things platform independent.
  - Fixed exporting PAD and SMD data in library scripts (flags were missing).

Release notes for EAGLE 4.13
============================

* Platforms:

  - EAGLE now also runs on Mac OS X (with X11). See the README file for
    details about system requirements.

* Supply Layers:

  - Added a note regarding the size of annulus symbols in supply layers to
    the online help for the LAYER command.

* User Language:

  - Fixed the example in the online help of 'dlgLabel'.

* BOARD command:

  - The BOARD command now places elements in the third and, if necessary,
    fourth quadrant of the newly created board in case there are too many
    of them to fit into the second quadrant.

* DRC command:

  - The DRC no longer checks polygons in packages against objects that have no
    electrical potential for clearance errors.

* VIA command:

  - When placing a via at a point where an SMD exists that is connected to
    a signal, the via is now automatically added to that signal.

* Miscellaneous:

  - With active f/b annotation any operations that would combine two signals
    in the board and would result in combining two nets in the schematic are
    now forbidden and need to be done in the schematic.
  - Changed the default entries in the drill diameter menus to metric values.
  - It is now possible to zoom into a drawing up to a factor where the
    internal editor resolution (0.1 micron) is visible. The checkbox
    "Options/User interface/Limit zoom factor" is still present and checked
    by default, but there is no more warning message when it is turned off.
    See "Help/Editor commands/WINDOW" for details on a few quirks that may
    happen when zooming in very far.
  - When running as user 'root' under Linux and Mac OS X (which is only
    necessary to do the licensing and should be avoided under normal operation),
    EAGLE no longer sets the "Projects" path to avoid a popup message at program
    start, and it also doesn't save the ~/.eaglerc file any more.
  - Improved opening the Control Panel's "File/Open/Project" menu in case
    there are many subdirectories that do not contain EAGLE projects.
  - Coordinates are no longer snapped to the current grid if they are entered
    textually with the '>' modifier, as in (> 1 2).

* Bugfixes:

  - Fixed handling very short wires in the ERC's test about net wires that only
    appear to be connected.
  - Fixed an occasional unjustified "Can't close window while command is
    running!" error.
  - Fixed auto routing towards an arc (it could happen that the last generated
    wire segment ended somewhere completely different).
  - Fixed loading full screen windows that are not maximized from a project
    under Windows.
  - Fixed drifting windows when loading from a project under Linux.
  - Fixed wrong window coordinates when restoring maximized windows from a
    project under Windows.
  - Fixed a possible crash when doing 'WINDOW (@);' after a PRINT on Windows
    (only happened with some printer drivers).
  - Fixed the DRC LOAD command in case the file name was not absolute and
    the file was not located in the current directory.
  - Fixed handling file names in the "Open recent" lists on systems that
    handle file names case insensitive (Windows).
  - Fixed a problem in assigning function keys, which has been introduced in
    version 4.11r04.
  - Fixed displaying pads and vias when dragging them on a white or colored
    background.
  - Fixed opening files in ULPs with the output() statement if the file
    name contains uppercase characters.
  - Fixed deleting a part in a schematic with Shift+DELETE in case it has
    gates on other sheets (these other gates were also drawn on the current
    sheet when doing UNDO).
  - Fixed calculating polygons (the CAM Processor generated slightly different
    results in consecutive calls with the same board file; these differences
    were at most the size of the machine resolution, which in practice had
    no negative effects).
  - Since the RATSNEST and the DRC command may produce faulty results if a
    drawing contains invalid polygons in the layers Top...Bottom, t/bRestrict,
    t/bKeepout or Dimension, such polygons are now reported as errors (a
    polygon is invalid if two or more of its edges intersect).
  - Fixed keeping the selected package variant visible in the device editor's
    package variants list.
  - Fixed handling the recent files list for boards that have been newly
    created from a schematic.
  - Fixed layer selection in CAM jobs (changes were lost when loading a
    drawing, or creating a new section, without first saving the changed
    CAM job).

Release notes for EAGLE 4.12
============================

* Autorouter:

  - The Autorouter now optionally runs even if a signal layer that contains
    objects is not activated.
  - When routing from a pad that covers more than one raster point, the
    Autorouter now tries to lay out the wire at the middle of the pad.
  - The Autorouter now applies the cfSmdImpact parameter to SMDs that are
    placed at angles of 45, 135, 225 or 315 degrees.

* CAM Processor:

  - The CAM Processor now also has a "File/Open recent" menu.
  - The CAM Processor now always prints all vias (even blind or buried) if
    the Vias layer is active, but none of the layers 1..16 is active.
  - Added a note to the CAM Processor's "Photoplotter Info File" regarding
    missing apertures in case they were requested in a non-orthogonal angle.
  - The CAM Processor no longer deselects all layers when clicking into
    some empty space of the "Layers" list.
  - Implemented some overlap when filling polygons with Postscript in the
    CAM Processor to avoid small gaps on some output devices.
  - The EXCELLON device in the CAM Processor now writes the actual drill sizes
    into the output file, so you no longer need to send the "drill rack" file
    to the board manufacturer. If you don't like this, you can disable this
    feature by deleting or commenting out the line

    DrillSize  = "%sC%0.4f\n"        ; (Tool code, tool size)

    in the eagle.def file.
  - The EXCELLON device in the CAM Processor now automatically generates the
    drill size definitions according to the actual values used in the board,
    so you no longer need a drill rack file. If you don't like this feature,
    you can disable it by deleting or commenting out the line

    AutoDrill  = "T%02d"             ; (Tool number)

    in the eagle.def file. Existing CAM jobs that have a drill rack file defined
    will continue to use that file.
  - The device EXCELLON_RACK has been introduced to still have the old
    functionality with user supplied rack file available.
  - The new drill station parameter BeginData can be used to define a string
    that is output before the actual drill data (the EXCELLON device now
    outputs a '%' here).
  - Added M48 and M72 to the EXCELLON Init string.

* Control Panel:

  - The Control Panel now has a new menu item "File/Open recent projects".

* Design Rules:

  - Increased the maximum copper thickness in the layer setup of the Design
    Rules to 1mm.

* User Language:

  - The new User Language function language() can be used to internationalize
    ULPs (see "Help/User Language/Builtins/Builtin Functions/Miscellaneous
    Functions/language()").
  - The User Language directive #usage can now handle internationalized
    texts (see "Help/User Language/Syntax/Directives/#usage").
  - The new User Language directive #require can be used to tell the user that
    a ULP requires at least the given version of EAGLE (see "Help/User
    Language/Syntax/Directives/#require").

* ADD command:

  - Changed the meaning of the wildcards ('*' and '?') in the ADD command.
    They used to match [a-z0-9_] and will now match any non-whitespace
    character.
  - The ADD dialog now has a checkbox that allows the pattern search in the
    descriptions to be turned off.

* DELETE command:

  - The DELETE command now combines two wires if applied to their joining point
    with the Ctrl key pressed. If you want to have this functionality without
    pressing the Ctrl key, you can append the line

    Cmd.Delete.WireJointsWithoutCtrl = "1"

    to the ~/.eaglerc file.

* DRC command:

  - The new options LOAD and SAVE in the DRC command can be used to load the
    Design Rules from or save them to a given file.
  - The DRC no longer checks objects that have no electrical potential (like
    wires in packages, rectangles, circles and texts) against each other for
    clearance errors.
  - The DRC dialog now has a 'Check' button instead of 'OK'.

* EXPORT command:

  - The EXPORT IMAGE command can now create TIFF files.

* INFO command:

  - The INFO command now also displays the data of the part when selecting a
    text from a smashed part.

* MITER command:

  - Changed the default values for "miter radius" to some typical grid values.

* MOVE command:

  - Moving texts of a smashed part now draws a line to the part's origin
    so that the user can see which part this text belongs to.

* NET command:

  - When drawing a net wire that connects two segments of different nets, the
    question "Connect Nets?" was changed to "Connect Net Segments?" in order
    to make it clear that only the two segments involved are concerned, and
    not the entire nets.

* PRINT command:

  - The selected printer, paper size and orientation are now also saved and
    restored under Windows.

* RATSNEST command:

  - Unnecessary thermal stubs that could occur around pads, vias and smds when
    calculating signal polygons are now avoided. Note that due to this
    modification there may be cases where a pad, via or smd that used to be
    considered connected to the polygon is now no longer actually connected
    and the RATSNEST command will generate an airwire.

    WARNING: If you send a board file created with this version of EAGLE to
    a boardhouse for manufacturing, and they will produce the CAM data
    themselves, please make sure that they use EAGLE version 4.11r05 or higher.
    Otherwise the manufactured board may contain thermal stubs even though
    you didn't see them in your version of EAGLE.

* RENAME command:

  - If the RENAME command is entered without any additional parameters in
    a package, symbol or device drawing, a dialog now pops up that requests
    the input of the new name for this object.

* UPDATE command:

  - The UPDATE command's new syntax 'old_library_name = new_library_name' can
    be used to update a library in a board or schematic with the contents of
    an other library (see "Help Update").

* VIA command:

  - The VIA command now activates the layers that correspond to the length
    of the via in case none of these layers is active and the Vias layer
    is set to color 0.

* WINDOW command:

  - 'WINDOW (@)' no longer reacts if the cursor is outside the editor window.

* Miscellaneous:

  - When renaming a signal the new name is now the default when the user
    is prompted whether to combine two signals.
  - The list of layers in the CAM Processor is now always wide enough to
    display the full layer names.
  - The CAM Processor now only prompts once per job (not once per job section)
    whether the current file should be reloaded.
  - When clicking into the drawing area of an editor window in order to
    activate that window, an active command in that window now ignores that
    mouse click to avoid unintended effects (like, for instance, inadvertently
    deleting an object).
  - Speeded up ratsnest calculation for large signals.
  - The "File/Open recent" list is now also updated in case of a "File/Save as"
    operation.
  - Changes to the visibility of toolbars made through the toolbar context
    menu are now also stored in the eaglerc file.
  - When mirroring a part where wires connected to that part change their
    layer, vias at the far ends of these wires are now placed/removed as
    necessary.
  - The program now uses German menu texts if the system is set to a
    German environment.
  - The window title now displays the program version number.
  - If an error is detected while calculating polygons, the editor window
    now zooms to one of the offending polygon edges.
  - Fixed the width of some characters in the vector font.
    WARNING: Note that due to this change some texts may turn out longer
             than they used to! If you have vector font texts on any of your
             signal layers, make sure you do a DRC before manufacturing the
             board with this new version!
  - If the center mouse button is used to pan the editor window, any special
    function of that mouse button (like bringing up the layer dialog) will
    now be performed if the panning distance doesn't exceed 10 pixel.
  - When panning the editor window with the center mouse button, the movement
    can now exceed the limits defined by the scroll bars if the Shift key is
    held down while panning.
  - If EAGLE is called with an eagle.epf file as argument, the respective
    project will now be opened.
  - If EAGLE is called with the name of a project that is contained in one
    of the directories listed in "Options/Directories/Projects", that project
    will now be opened.
  - Improved selecting objects in densely populated areas with click&drag.
  - The splitter position in the Control Panel and the Help window (Linux only)
    is now stored in the eaglerc file.
  - If you don't like the special mode in wire drawing commands that allows
    for the definition of an arc radius by pressing the Ctrl key when placing
    the wire, you can add the line

    Cmd.Wire.IgnoreCtrlForRadiusMode = "1"

    to the ~/.eaglerc file. This will turn this
    feature off for all commands that draw wires.

* Bugfixes:

  - After dropping a library from the ADD dialog, the respective entry in the
    Control Panel's tree view is now refreshed accordingly.
  - Fixed handling the coordinates of rectangles (were sometimes off by one
    editor unit).
  - Fixed selecting a rotated rectangle with Ctrl+MOVE.
  - Fixed Gerber data output in case of negative coordinates ('-' was counted
    against the number of digits).
  - Fixed handling UL_GRID.unitdist.
  - Fixed a crash under Windows when re-loading a very large text file.
  - Fixed '#' substitution in output file names of the CAM Processor.
  - Fixed a possible crash when browsing through libraries from older versions
    in the ADD dialog.
  - Fixed an unjustified DRC width error for short arcs with round endings.
  - Fixed a crash when doing ROTATE with a part name and then clicking into
    the drawing with the right mouse button in case there was no group defined.
  - Fixed highlighting parts and elements when clicking on their smashed names
    or values with SHOW.
  - Fixed drawing rectangles on HPGL2 and derived devices and DESIGNJET650
    in the CAM Processor. Since version 4.11 the "Bar" function in 'eagle.def'
    requires handling of the angle, which these devices can't do, so they need
    to emulate rectangles.
  - Fixed loading drawings that were created with EAGLE versions before 3.0
    directly into version 4.11 (object orientations were not updated correctly).
  - Fixed handling rectangles in schematics in dxf.ulp.
  - Fixed an unjustified renaming of a net when deleting a junction.
  - Fixed handling >PLOT_DATE_TIME in EXPORT IMAGE.
  - Fixed handling the character 'mue' (0xB5) when converting strings to
    uppercase. Note, though, that still only the characters below ASCII
    code 127 are guaranteed to work. Any other characters should not be used!
  - Fixed an unjustified change of package or symbol names to "...@1" when
    doing a library update in case the device set as used in the schematic
    is no longer present in the library.
  - Fixed mirroring polygons that are completely contained in a group.
  - Fixed handling coordinates in the ERC report.
  - Fixed handling text files containing locale dependent characters like,
    for instance, the 'euro' symbol.
  - Fixed unjustified airwires in case non-through vias and supply layers
    are used.
  - Fixed ADDing parts with drag&drop from the Control Panel that have one
    of the characters '{' or '}' in their name.
  - Fixed selecting vias with the Ctrl key pressed.
  - Fixed a crash when changing the command text menu from within a button
    that has a submenu.
  - Fixed displaying vias/pads in EXPORT IMAGE in case the Vias/Pads layer
    is set to color 0.
  - Fixed generating bus names.
  - Fixed handling of '<', '>' and '&' in names and values when displayed
    in a Rich Text context.
  - Fixed drawing text origins when panning.
  - Fixed handling ASSIGNed keys. They now really override hotkeys that
    are used for pulldown menus.
  - Fixed automatic ending of net and bus wires in case the newly drawn
    and the target wire are in a straight line and get optimized to form
    a single wire.
  - Fixed selecting vias of the same signal that have been wrongly placed
    at the same coordinates.
  - Fixed an unexpected popup menu in the CHANGE command.
  - Fixed a crash when printing under Linux without a defined printer.
  - Fixed placing a via in case there is a polygon wire at that location.
  - Fixed automatically setting junctions if "Auto end net and bus" is off.
  - Fixed displaying the Color column in the layer list of the CAM Processor.
  - Fixed handling polygons within packages in the Autorouter.
  - Fixed a possible loss of wire connectivity in the MOVE and PASTE commands
    with non-orthogonal angles.
  - Fixed assigning window icons when opening a script or ULP editor window
    from a project.
  - Fixed calculating signal polygons with a very large number of edges.
  - Fixed selecting gates in a device drawing with Ctrl+MOVE.
  - The MITER command now only inserts a new wire if the two existing wires
    are on the the same layer, have the same width and wire style.
  - Wires are now only optimized if they have the same wire style.
  - Fixed the ROTATE command if an object was selected with click&drag
    and the mouse button was released outside the editor window.
  - Fixed using the User Language builtin statements board, schematic, sheet,
    library, deviceset, package and symbol in a variable initialization, as in
    int a = board;
  - Fixed undoing a library update of a library that contained supply devices.
  - Fixed CUT/PASTE in case the pasted drawing contains modified packages that
    are only referenced by devices that are not contained in the target drawing.
  - Fixed a possible loss of consistency with implicit power pins in case a
    single segment net with the same name as these power pins was renamed or
    connected to an other net.
  - Fixed relocating wires after a library update (sometimes they could no
    longer be selected).
  - Fixed handling signal polygons in the EXPORT IMAGE command that
    would completely vanish after being calculated (their outlines were printed
    as seen on the screen).
  - Fixed an unnecessary window refresh when turning the MARK on or off.
  - Fixed setting blind or buried vias at places where there are signal wires
    on layers that are not covered by those vias.
  - Fixed focus handling when closing stacked dialogs in a ULP.
  - Fixed slow script execution with NET, MOVE and ROTATE.
  - Fixed handling the default button in a ULP dialog that contains a
    dlgTextView.
  - Fixed handling recent files category names in the eaglerc file (were
    sometimes all uppercase under Windows).
  - Fixed exporting monochrome images under Linux and printing with the "black"
    option under both Linux and Windows in case color 15 did not have the
    default value.
  - Fixed handling the "File/Open recent" menus in script and ULP editor windows
    when loading them from a project.
  - Fixed detecting a loss of consistency if a net class is defined (but not
    used) while f/b annotation is not active (maybe because the other drawing
    is not loaded).
  - Fixed handling net classes when doing a PASTE into a schematic/board pair.
  - Fixed handling micro vias on two layer boards (vias from layer 1 to 16 with
    a drill diameter less than the minimum drill diameter were wrongfully
    considered micro vias).
  - Fixed handling orientation in the RECT command (now also accepts lowercase).
  - Fixed setting the >LAST_DATE_TIME string when modifying the Design Rules.
  - Fixed handling command text buttons in case of a "nothing to edit" error.
  - Fixed the DRC distance check in case of dimension wires with a width of
    zero and a Copper/Dimension distance value of 0.2 or 0.3 micron.
  - Fixed handling eaglerc entries that contain '='.
  - Texts in signal layers with proportional or fixed font are no longer checked
    against each other for clearance errors in the DRC (same as has already
    been the case with vector font texts).
  - Fixed selecting holes and junctions with Ctrl+MOVE.
  - Fixed displaying the currently pressed button in the command text menu
    under Windows XP.
  - Fixed placing a wire in the ROUTE command in case the length of the
    remaining airwire is below the Snap_Length, but a finishing wire can't
    be placed automatically due to layer constraints.
  - Fixed the automatic ratsnest calculation in the ROUTE command (it didn't
    always calculate the shortest airwire).
  - Fixed drawing wires in signal layers with the WIRE command to or from smds
    in case the smd part is mirrored or the wire is not in the same layer as
    the smd.
  - Fixed setting the visible routing layers in the DISPLAY dialog according
    to the Design Rules for newly created boards.
  - Fixed going into click&drag mode for off-grid objects with coarse grid.
  - Fixed drawing smds with roundness 100 and orthogonal rotations with any
    of the CAM Processor devices that are derived from the "Generic" device
    (like EPS, for instance).
  - Fixed handling circles with zero width (typically used in restrict layers)
    in the autorouter (it didn't route as close to them as it would have been
    allowed according to the design rules).
  - Fixed a possible crash when moving one end of the last wire of a net segment
    onto the other end of that wire.

Release notes for EAGLE 4.11
============================

* Library Management:

  - Packages and Device Sets can now be copied into the currently edited
    library from other libraries, either through Drag&Drop from the Control
    Panel or by using the COPY command's new extended syntax (see "Help Copy").
  - New package variants can now be created by directly using packages from
    other libraries, either through Drag&Drop from the Control Panel or by
    using the PACKAGE command's new extended syntax.
  - The packages of the currently edited library can now be updated with those
    from other libraries, either through Drag&Drop from the Control Panel or
    by using the UPDATE command's new extended syntax.

* Blind & buried vias:

  - The program can now handle so-called "blind & buried" vias. "Blind" vias
    are those that are not drilled all the way through the current layer stack.
    "Buried" vias are produced by drilling through the entire current layer
    stack. Vias that go all the way through the complete board are basically
    the same as "buried" vias, but sometimes are also referred to as "through"
    vias. "Micro vias" are small blind vias that go from one layer to the next
    inner layer. These are typically used to connect SMD pads to an inner layer,
    without having to run a wire away from the SMD.
  - The Design Rules dialog now has a new tab named "Layers", in which the
    layer setup can be defined. The minimum drill size and aspect ratio for
    blind vias can be defined on the "Sizes" tab.
  - When updating an existing board from an older version, the layer setup
    will be determined by the layers that are actually in use (either because
    there are objects in them, or they are supply layers, or they are used by
    the Autorouter setup). The layer stack will consist of a sequence of
    "core" and "prepreg" material (with the thickness of the individual layers
    chosen so that the final board results in a thickness between 1mm and 1.5mm),
    and which allows a via that goes through all layers.
    After loading an old board into this version you should verify the layer
    setup in the Design Rules and adjust it to your actual needs.
  - The DISPLAY and LAYER dialogs (and related combo boxes) will only display
    those signal layers that are used in the layer setup.
  - The CHANGE LAYER and ROUTE command only set the minimum necessary vias
    (according to the layer setup in the Design Rules). It may happen that an
    already existing via of the same signal is extended accordingly, or that
    existing vias are combined to form a longer via if that's necessary to
    allow the desired layer change.
  - The VIA command has a new parameter that defines the layers this via shall
    cover. The syntax is from-to, where 'from' and 'to' are the layer numbers
    that shall be covered. For instance 2-7 would create a via that goes from
    layer 2 to layer 7 (7-2 would have the same meaning). If that exact via is
    not available in the layer setup of the Design Rules, the next longer via
    will be used (or an error message will be issued in case no such via can be
    set).
  - The Autorouter cannot work with supply layers and non-through vias at the
    same time. In such cases you need to replace the supply layers with signal
    polygons accordingly.
  - The CHANGE command has a new option named VIA, which can be used to change
    the layers a via covers. The syntax is

    CHANGE VIA from-to *

    where 'from' and 'to' are the layer numbers the via shall cover. If that
    exact via is not available in the layer setup of the Design Rules, the
    next longer via will be used (or an error message will be issued in case
    no such via can be set).
  - The User Language object UL_VIA, now has two new data members 'start' and
    'end', which return the layer numbers in which that via starts and ends.
    The value of 'start' will always be less than that of 'end'. Note that the
    data members 'diameter' and 'shape' will always return the diameter or shape
    that a via would have in the given layer, even if that particular via doesn't
    cover that layer (or if that layer isn't used in the layer setup at all).
  - The DRC now checks whether all vias and objects in signal layers correspond
    to the actual layer setup. If they don't, a "Layer Setup" error is flagged.
  - If the layer setup of a board contains blind or buried vias, the CAM
    Processor generates a separate drill file for each via length that is
    actually used in the board (see "CAM Processor").
  - The DRC performs new checks for blind vias: vias that don't pass the check
    against the "Minimum Drill" parameter and are blind vias that are exactly
    one layer deep (so-called "micro vias") are checked against the "Min.
    Micro Via" parameter. Blind vias that pass these tests will further be
    checked to see whether they have a drill diameter that conforms to the
    "Min. Blind Via Ratio" parameter in "Edit/Design Rules/Sizes".

* Arbitrary angles:

  - Texts and elements in a board context can now be rotated by any angle,
    in steps of 0.1 degrees (see "Help Add" for a description of the
    "orientation" flags).
  - The new "Spin" flag in orientations can be used to disable the function
    that keeps texts readable from the bottom or right side.
  - Pads and SMDs can now be placed with arbitrary angles.

* Arcs and Wires:

  - In many aspects Arcs are now treated the same way as Wires. They are
    part of a signal when drawn in a signal layer, they can be used when
    drawing a polygon, and they now also have a wire style.
  - The endings of arcs can now be either round or flat. You should use
    flat arc endings only when absolutely necessary (round endings have
    advantages when generating, e.g., Gerber files).
  - The end points of an arc can now be moved independently, just like those
    of wires. When moving such points, the radius of the arc will be scaled
    accordingly.
  - All commands that draw wires can now draw arcs by using the new 'curve'
    or '@radius' parameter (see "Help/Editor Commands/WIRE").
  - There are no more 'arcs()' loop members in the User Language. Any ULPs
    that used to loop through arcs must now check the new data member
    UL_WIRE.arc when looping through the wires (see "Help/User Language/Object
    Types/UL_WIRE"). The "User Language" section below contains an example
    that shows how to adapt existing ULPs.
  - The new command MITER can be used to take the edge off wire joins
    (see "Help Miter").
  - The wire bend styles 0, 1, 3 and 4 now use an additional miter radius as
    defined with the MITER command.

* Additional flags for pads, vias and smds:

  - Pads, Vias and SMDs now have additional flags that control the generation
    of the stop and cream masks, the thermals and the shape of the "first" pad
    within a package.
  - The User Language objects UL_PAD, UL_VIA and UL_SMD have a new data member
    'flags', which returns the setting of these flags (see "Help/User
    Language/Object Types/UL_PAD", "Help/User Language/Object Types/UL_VIA" and
    "Help/User Language/Object Types/UL_SMD").
  - The PAD and SMD commands support the new options NOSTOP, NOTHERMALS,
    NOCREAM, and FIRST, respectively, to define these flags. The VIA command
    supports the new option STOP.
  - The CHANGE command has the new options STOP, CREAM, and FIRST to modify
    these flags (the THERMALS option already exists).

* User definable colors:

  - The layer, background and grid colors are now completely user definable.
  - There are now three "palettes" for black, white and colored background,
    respectively. Each palette has 64 color entries, which can be set to any
    RGB value. The palette entry number 0 is used as the background color
    (in the "white" palette this entry cannot be modified, since this palette
    will also be used for printing, where the background is always white).
  - The color palettes can be modified either through the dialog under
    "Options/Set.../Colors" or by using the command

    SET PALETTE <index> <rgb>

    where <index> is a number in the range 0..63 and <rgb> is a hexadecimal
    RGB value, like 0xFFFF00 (which would result in a bright yellow). Note
    that the RGB value must begin with "0x", otherwise it would be taken as a
    decimal number. You can use

    SET PALETTE BLACK|WHITE|COLORED

    to switch to the black, white or colored background palette, respectively.
    Note that there will be no automatic window refresh after this command, so
    you should do a WINDOW; command after this.
  - By default only the palette entries 0..15 are used and they contain the
    same colors as previous versions.
  - The palette entries are grouped into "normal" and "highlight" colors. There
    are always 8 "normal" colors, followed by the corresponding 8 "highlight"
    colors. So colors 0..7 are "normal" colors, 8..15 are their "highlight"
    values, 16..23 are another 8 "normal" colors with 24..31 being their
    "highlight" values and so on. The "highlight" colors are used to visualize
    objects, for instance in the SHOW command.
  - The background color for layout and schematic can now be set to any color.
    Note, though, that in case the background color is neither pure black nor
    pure white, the drawing will be displayed layer by layer, which usually
    makes a window refresh slower than with black or white background.
  - Changes to the "Options/Set..." dialog:
    + The "Grid" Tab has been renamed to "Colors".
    + The minimum visible grid size parameter has been moved to the "Misc" tab.
  - The new User Language builtin function 'palette()' can be used to determine
    the currently used palette as well as the palette entries (see "Help/User
    Language/Builtins/Builtin Functions/Miscellaneous Functions/palette()").

* Control Panel:

  - The tree view in the Control Panel can now be sorted by 'name' or by
    'type' via the pulldown menu option "View/Sort".
  - The Control Panel's pulldown menu option "File/Refresh tree" has been
    moved to "View/Refresh".
  - Directory entries in the Control Panel's tree view which can contain
    libraries now all have the "Use all" and "Use none" options in their
    context menus.
  - New context menu options for libraries, device sets and packages as well
    as Drag&Drop features for copying and updating library objects, and for
    creating new package variants.
  - Drag&Drop of a board, schematic or library file into the appropriate
    editor window now loads the file into that window for editing. The
    previous functionality of performing a library update when dropping a
    library into any editor window has been removed.

* Design Rules:

  - The new Design Rule parameters Shapes/Elongation can be used to define
    the elongation of Long and Offset shaped Pads. Valid values are from 0 to
    200, where 0 results in a regular octagon shape (no elongation) and 100
    gives you a side ratio of 2:1 (100% elongation), which is the ratio that
    has been hard-coded in previous program versions.
  - The Design Rules dialog now has a new tab named "Layers", which defines
    the layer setup for multilayer boards (see "Help/Design Checks/Design Rules").
  - The Design Rules tab "Shapes" contains a new combo box named "First", which
    defines the shape of the "first" pad within a package.
  - The Design Rules tab "Sizes" contains the two new parameters "Min. Micro Via"
    and "Min. Blind Via Ratio".
  - The Design Rules tab "Restring" contains a new set of restring parameters
    for micro vias.

* User Language:

  - The User Language member functions UL_PAD.shape and UL_VIA.shape now return
    PAD_SHAPE_ANNULUS, PAD_SHAPE_THERMAL, VIA_SHAPE_ANNULUS and
    VIA_SHAPE_THERMAL, respectively, if their shape is requested for a supply
    layer (see Help/User Language/Object Types/UL_PAD and UL_VIA).
  - The User Language dialog object dlgListView now accepts a new parameter
    that defines the column and direction to use for sorting.
  - The User Language functions strchr(), strstr(), strrchr() and strrstr()
    now accept an 'index' parameter to start the search at a given position.
  - Opening the same file concurrently in two output() statements in a User
    Language Program is now treated as an error.
  - The User Language objects UL_HOLE, UL_PAD and UL_VIA now have a new
    data member 'drillsymbol'.
  - A User Language Program can now be aborted even if it is currently
    executing a lengthy 'for' or 'while' loop.
  - The new ULP function status() can be used to display a message in the
    editor window's status bar.
  - The User Language dialog function dlgTextView now accepts a second
    parameter to support hyperlinks in Rich Text (see "Help/User
    Language/Dialogs/Dialog objects/dlgTextView()").
  - The User Language dialog function dlgMessageBox can now add an icon
    to the message box by prepending the message string with one of the
    characters '!', ';' or ':' (see "Help/User Language/Dialogs/Predefined
    Dialogs/dlgMessageBox()").
  - Due to the implementation of arbitrary angles and "spin" the following new
    member functions have been added to the User Language:
    UL_PAD.angle, UL_SMD.angle, UL_RECTANGLE.angle, UL_ELEMENT.angle,
    UL_ELEMENT.spin and UL_TEXT.spin.
    Make sure you take these into account in your own ULPs as necessary,
    otherwise boards containing objects with these new features may be handled
    incorrectly. See the 'dxf.ulp' for an example.
  - Due to the modifications of pad shapes, the User Language constants
    PAD_SHAPE_XLONGOCT and PAD_SHAPE_YLONGOCT have been replaced with
    PAD_SHAPE_LONG, and the new constant PAD_SHAPE_OFFSET has been introduced.
  - The new User Language member function UL_PAD.elongation returns the
    elongation value for pads with shapes Long or Offset.
  - The User Language object UL_VIA, now has two new data members 'start' and
    'end', which return the layer numbers in which that via starts and ends.
    The value of 'start' will always be less than that of 'end'. Note that the
    data members 'diameter' and 'shape' will always return the diameter or shape
    that a via would have in the given layer, even if that particular via doesn't
    cover that layer (or if that layer isn't used in the layer setup at all).
  - Due to the implementation of different arc cap styles the member function
    UL_ARC.cap has been added to the User Language.
  - The loop member functions UL_BOARD.arcs(), UL_PACKAGE.arcs(), UL_SHEET.arcs()
    and UL_SYMBOL.arcs() no longer exist, since arcs are now treated a lot like
    wires. Any ULPs that used to loop through arcs must now check the new data
    member UL_WIRE.arc when looping through the wires (see "Help/User
    Language/Object Types/UL_WIRE").
    To convert an existing ULP that uses the arcs() loop member functions
    consider the following example:

    Assume you have a ULP that looks like this:

    void ProcessArc(UL_ARC A) { /* do something with the arc */ }
    void ProcessWire(UL_WIRE W) { /* do something with the wire */ }
    board(B) {
      B.arcs(A) ProcessArc(A);
      B.wires(W) ProcessWire(W);
      }

    To make it run with EAGLE version 4.1 you need to eliminate the 'arcs()'
    call and move the actual arc processing into the ProcessWire() function:

    void ProcessArc(UL_ARC A) { /* do something with the arc */ }
    void ProcessWire(UL_WIRE W)
    {
      if (W.arc)
         ProcessArc(W.arc);
      else
         /* do something with the wire */
    }
    board(B) {
      B.wires(W) ProcessWire(W);
      }

    Note that you only need this explicit handling of arcs if you actually
    need to gain access to parameters only the UL_ARC can provide. If you are
    not interested in that kind of information, you can handle the arcs just
    like ordinary wires, using the parameters the UL_WIRE provides.
  - To be able to handle any UL_ARC on UL_WIRE level the UL_WIRE object now
    has the two additional members 'cap' and 'curve'.
  - The User Language objects UL_PAD, UL_VIA and UL_SMD have a new data member
    'flags', which returns the setting of the flags that control mask and
    thermal generation (see "Help/User Language/Object Types/UL_PAD",
    "Help/User Language/Object Types/UL_VIA" and "Help/User Language/Object
    Types/UL_SMD").
  - The User Language object UL_HOLE has a new data member 'diameter[]' which
    returns the diameter of the solder stop masks.
  - The output() statement in a User Language Program now supports the new
    mode character 'D', which causes the file to be automatically deleted at
    the end of the EAGLE session (see "Help/User Language/Builtins/Builtin
    Statements/output()").
  - The User Language object UL_GRID now has an additional data member named
    'unitdist', which returns the grid unit that was used to define the actual
    grid distance (see "Help/User Language/Object Types/UL_GRID).

* Autorouter:

  - The Autorouter no longer attempts to route within the borders of the
    signal's surrounding rectangle first, because that way it sometimes was
    forced to take an "expensive" path, which it would have avoided if it
    had been allowed to use the entire board area in the first place. This
    may cause longer routing times in some cases, but may just as well speed
    up the routing, especially on complex boards.

* CAM Processor:

  - The new parameter MaxApertureSize can be used in the 'eagle.def' file to
    define an upper limit for the size of the generated apertures for the
    GERBERAUTO and GERBER_RS274X devices. If objects larger than this limit
    are to be displayed, apertures will be emulated for them.
  - If the board contains blind or buried vias, the CAM Processor generates a
    separate drill file for each via length that is actually used in the board.
    The file names are built by adding the number of the start and end layer
    to the base file name, as in

    boardname.drd.0104

    which would be the drill file for the layer stack 1-4. If you want to have
    the layer numbers at a different position, you can use the placeholder %L,
    as in

    .%L.drd

    which would result in

    boardname.0104.drd

    The drill info file name is always generated without layer numbers, and
    any '.' before the %L will be dropped.
    Any previously existing files that would match the given drill file name
    pattern, but would not result from the current job, will be deleted before
    generating any new files. There will be one drill info file per job, which
    contains (amoung other information) a list of all generated drill data files.
  - The aperture wheel file is now checked for duplicate D-codes (see
    "Help/Generating Output/CAM Processor/Output Device/Device
    Parameters/Aperture Wheel File").

* Text editor:

  - Setting the font in a text editor window is now done via the pulldown
    menu option "File/Font..." and no longer via the printer setup. The
    selected font is now also used in the text editor window.

* ADD command:

  - The ADD command now mirrors the object that is attached to the cursor
    when the center mouse button is pressed.

* ARC command:

  - Arcs are now part of a signal if drawn in a signal layer of a board.
    When updating an existing board drawing, arcs in signal layers are
    transferred into signals (either newly generated ones or the ones that
    the arcs are apparently connected to by sharing the same end points).
  - The ARC command now accepts a signal name (just like the WIRE command).
  - The endings of arcs can now be either round or flat (the ARC command
    therefore accepts the new parameters ROUND and FLAT).
    When updating an existing drawing, the 'cap' parameter of all arcs in
    boards, packages and symbols, that have their endings covered by other
    objects (like wires or vias) will be set to 'round'. This allows them
    to be drawn more easily on the various output devices.

* BUS command:

  - The BUS command now has an extended syntax to allow drawing arcs (see
    "Help/Editor Commands/BUS").

* CHANGE command:

  - When changing the layer of a signal wire, only the minimum necessary
    via will be set (according to the layer setup in the Design Rules). It may
    happen that an already existing via of the same signal is extended
    accordingly, or that existing vias are combined to form a longer via if
    that's necessary to allow the desired layer change.
  - The CHANGE command has a new option named VIA, which can be used to change
    the layers a via covers. The syntax is

    CHANGE VIA from-to *

    where 'from' and 'to' are the layer numbers the via shall cover. If that
    exact via is not available in the layer setup of the Design Rules, the
    next longer via will be used (or an error message will be issued in case
    no such via can be set).
  - The CHANGE command can now change the cap style of arcs by using

    CHANGE CAP ROUND | FLAT
  - The CHANGE command has the new options STOP, CREAM, and FIRST to modify
    the new pad/smd flags (the THERMALS option already exists).
  - The parameters Spacing and Isolate in the CHANGE popup menu now present
    a list of predefined values (just like, for instance, the Width parameter).
    All such popup menus now contain the entry "..." at the bottom, which
    brings up a dialog to enter a new value.

* COPY command:

  - The COPY command can now copy parts in a schematic (see "Help Copy").
  - The COPY command can now copy packages and device sets from other
    libraries into the currently edited library (see "Help Copy").
  - The COPY command now mirrors the object that is attached to the cursor
    when the center mouse button is pressed.


* DELETE command:

  - The option "SIGNALS" must now be written in full.

* DISPLAY command:

  - The automatic enabling/disabling of related layers when activating or
    deactivating the t/bPlace or Symbols layer in the DISPLAY command can now
    be turned off by appending the line

    Option.DisplayRelatedLayers = "0"

    to the ~/.eaglerc file.

* DRC command:

  - The DRC now checks for objects in the Pads and Vias layer that are not
    Pads or Vias (i.e. wires, rectangles etc.) and flags them as "Layer Abuse"
    errors. The reason for this is that EAGLE does not handle these object
    in any special way, so they might cause short circuits. If you get such
    an error from the DRC, you should move the object in question into the
    proper signal layer(s).
  - The DRC now checks objects in the t/bKeepout layers only if the
    respective layer is activated.
  - The DRC now checks whether all vias and objects in signal layers correspond
    to the actual layer setup. If they don't, a "Layer Setup" error is flagged.

* GRID command:

  - The GRID command accepts the new option 'alt', which allows you to define
    an "alternate" grid that will be used whenever you press the Alt key while
    selecting or moving objects. The alternate grid can have its own size and
    unit, and is typically used to temporarily switch into a finer grid if the
    normal grid is too coarse. See "Help/Editor Commands/GRID".
  - The GRID dialog has been changed to allow the user to enter the alternate
    grid parameters.

* INVOKE command:

  - The INVOKE command now mirrors the object that is attached to the cursor
    when the center mouse button is pressed.

* MIRROR command:

  - The MIRROR command now accepts the name of an element in a board, just
    like the MOVE command.

* MITER command:

  - The new command MITER can be used to "take the edge off" wire joins
    (see "Help Miter").

* MOVE command:

  - When picking up an object with the MOVE command, the status line now
    displays the same information as the SHOW command (currently this only
    works if the "User guidance" is turned off).
  - If an Arc is selected at one of its end points, that point can now be moved
    freely (just like that of a Wire). The Radius of the Arc is then scaled
    accordingly.
  - The MOVE command now mirrors the object that is attached to the cursor
    when the center mouse button is pressed.
  - The MOVE command can now select objects at their origin by pressing the
    Ctrl key (see "Help/Editor Commands/MOVE").

* NET command:

  - The NET command now displays information about the current net in the
    status line.
  - The NET command now has an extended syntax to allow drawing arcs (see
    "Help/Editor Commands/NET").

* PACKAGE command:

  - The PACKAGE command can now create package variants with packages from
    other libraries (see "Help Package").

* PAD command:

  - The PAD command can now create pads with arbitrary angles and therefore
    accepts an "orientation" parameter (See "Help Pad").
  - The pad shapes XLongOct and YLongOct have been renamed to Long. When
    updating an existing drawing from a previous version, XLongOct pads will
    be converted to Long pads with an angle of 0 degrees, and YLongOct pads
    will become Long with 90 degrees.
  - The new pad shape "Offset" can be used to have pads that have the shape as
    defined by Long, but extend only to one side.
  - The PAD command supports the new options NOSTOP, NOTHERMALS and FIRST to
    define the new 'flags' (see "Help/Editor Commands/PAD").

* PASTE command:

  - The PASTE command now mirrors the object that is attached to the cursor
    when the center mouse button is pressed.

* POLYGON command:

  - The 'width' and 'layer' can now be changed at any time while drawing a
    polygon.
  - The POLYGON command now has an extended syntax to allow drawing arcs (see
    "Help/Editor Commands/POLYGON").

* RATSNEST command:

  - The RATSNEST command now processes all points of a signal, even if that
    signal is very complex (in previous versions it dropped wire end points
    from processing if the total number of connection points exceeded 254).
    This requires more memory when calculating the ratsnest. In case this
    is a problem on your system, you can revert to the original method
    by appending the line

    Option.RatsnestLimit = "254"

    to the ~/.eaglerc file. The value given
    here is the number of connection points up to which all wire end points
    will be taken into account and thus limits the amount of memory used
    (processing will use up to the square of this value in bytes, so a value
    of 1024 will limit the used memory to 1MB). A value of "0" means there is
    no limit. A value of "1" will result in airwires being connected only to
    pads, smds and vias.
  - RATSNEST no longer marks the board drawing as modified, since the
    calculated polygon data (if any) is not stored in the board, and the
    recalculated airwires don't really constitute a modification of the drawing.

* ROTATE command:

  - The ROTATE command now accepts an "orientation" parameter (e.g. SMR359.9).
  - The ROTATE command now accepts the name of an element in a board, just
    like the MOVE command.
  - The ROTATE command can now be used with Click&Drag to rotate objects or
    groups by any angle (see "Help Rotate").

* ROUTE command:

  - The ROUTE command now dynamically recalculates the current airwire while
    routing. In doing so, it also takes into account points along a wire, if
    those are closer to the cursor than the ends of that wire. If there is
    a pad, via or smd that is at most Snap_Length away from the end of the
    airwire (in the current layer), that end will now snap to the center of
    the object.
  - The ROUTE command no longer automatically sets a Via at the end point
    of a wire. If you want to place a Via at the end point of a routed wire
    you can do so by holding the Shift key down while clicking at the end
    point.
  - When determining the layer in which to route, the ROUTE command now also
    considers Wires (not only SMDs).
  - When changing the layer in the ROUTE command, only the minimum necessary
    via will be set (according to the layer setup in the Design Rules). It may
    happen that an already existing via of the same signal is extended
    accordingly, or that existing vias are combined to form a longer via if
    that's necessary to allow the desired layer change.
  - The ROUTE command now has an extended syntax to allow drawing arcs (see
    "Help/Editor Commands/ROUTE").
  - The ROUTE command now creates a new airwire if necessary when Ctrl is
    pressed while selecting the starting point (see "Help/Editor Commands/ROUTE").

* SET command:

  - The SET USED_LAYERS command also takes into account the layers from the
    new multilayer setup in the Design Rules and keeps them in the menus.
  - The SET WIRE_BEND command accepts the two new values 5 and 6 to define
    bend styles that start or end in a 90 degree arc, plus the new value 7
    for a bend style that results in an arc that exactly fits to the wire at
    the starting point.  If there isn't exactly one wire at the starting point,
    a straight wire is drawn. This bend style can be used to draw wires in sort
    of a "freehand" way.
  - The special character '@' can be used with the SET WIRE_BEND command to
    define which bend styles shall actually be used when switching with the
    right mouse but (as in SET WIRE_BEND @ 1 2 4 5;).
  - The SET command now restores the program default values for the parameter
    menus when executed as, for instance,

    SET WIDTH_MENU;

    (i.e. without any values). This applies to all *_WIDTH parameters.

* SHOW command:

  - The SHOW command now displays the net class (in case of a net or signal)
    and the gate name (in case of a multi gate part).

* SMASH command:

  - The SMASH command can now be applied to a GROUP.
  - Pressing the Shift key while clicking on a part or group with the SMASH
    command will now "un-smash" the object.
  - The >PART and >GATE parameters are now also smashed.

* SMD command:

  - The SMD command supports the new options NOSTOP, NOTHERMALS and NOCREAM to
    define the new 'flags' (see "Help/Editor Commands/SMD").

* SPLIT command:

  - The SPLIT command now has an extended syntax to allow drawing arcs (see
    "Help/Editor Commands/SPLIT").

* UPDATE command:

  - The UPDATE command can now update packages in a library (see "Help Update").

* VIA command:

  - The VIA command has a new parameter that defines the layers this via shall
    cover. The syntax is from-to, where 'from' and 'to' are the layer numbers
    that shall be covered. For instance 2-7 would create a via that goes from
    layer 2 to layer 7 (7-2 would have the same meaning). If that exact via is
    not available in the layer setup of the Design Rules, the next longer via
    will be used (or an error message will be issued in case no such via can be
    set).
  - The VIA command supports the new option STOP to define the new 'flags'
    (see "Help/Editor Commands/VIA").

* WIRE command:

  - The WIRE command now has an extended syntax to allow drawing arcs (see
    "Help/Editor Commands/WIRE").

* Miscellaneous:

  - If a net gets renamed because a Supply pin was placed on it, the user is
    now notified of this.
  - Improved part placement in BOARD and PASTE command.
  - The files created with EXPORT IMAGE now contain the image resolution in
    case the image format supports this.
  - The RIPUP command can now be interrupted.
  - The cursor is now switched to the "hour glass" while the Autorouter run.
  - The size of the text origins is now limited to the actual size of the text.
  - There is now a new item "Stop command" in the "Edit" pull down menu which
    has the same effect as the "Stop" button in the action toolbar.
  - When printing on DOS based Windows systems (Windows 95, 98, ME) EAGLE can
    now render the drawing in memory and send the complete bitmap to the printer
    in order to overcome problems with printing texts on some printer drivers.
    This slows down printing, but at least it produces correct results. If you
    happen to have a printer driver that doesn't work correctly, you can
    turn this workaround on by setting the parameter

    Printer.InternalRendering

    in the ~/.eaglerc file to a value other than
    the default "0".
    The individual bits in the number each stand for a specific Windows version:

    00000001 = Win32s
    00000010 = Windows 95
    00000100 = Windows 98
    00001000 = Windows Me
    00010000 = Windows NT
    00100000 = Windows 2000
    01000000 = Windows XP

    You can use any combination of these bits in order to turn InternalRendering
    on or off for specific platforms. For instance the setting

    Printer.InternalRendering = "6"

    would turn this feature on only for Windows 95 and Windows 98.
    If you had "Options/User interface/Always vector font" active because
    your printer wouldn't print non-vector fonts correctly, you may want to
    turn that option off now and try printing non-vector fonts. You may also
    need to turn off the "Persistent in this drawing" option for a particular
    drawing. Selecting the "Black" option in the PRINT dialog may speed up
    printing (in case you are printing to a black&white device).
  - Printing under Linux now supports CUPS.
  - When selecting an object in a densly populated area, the "Select
    highlighted object" message now also displays the information about
    that object, as would the SHOW command.
  - Opening the same file concurrently in two output() statements in a User
    Language Program is now treated as an error.
  - Error message dialogs now use the system defined sound effects.
  - When connecting net segments the user is now always informed about the
    resulting name.
  - The SIGNAL and PINSWAP commands now offer a selection if there are, for
    instance, two SMD pads on Top and Bottom at the same location.
  - The DELETE command can now be interrupted when deleting a GROUP.
  - The cursor now changes to the "hour glass" while processing polygons.
  - Improved selecting smashed names/values in densely populated areas.
  - If changing a package in a board results in connected pads of that
    element being moved outside of the allowed board area of the Light or
    Standard edition, the wires attached to these pads are now ripped up
    in order to comply with the board area limitations.
  - Fixed handling of '\' at the end of script lines (the '\' inserted an
    additional blank, which caused problems with 'Description' lines in muliple
    EXPORT/SCRIPT of a library).
  - An airwire in a dense area now triggers the selection mechanism even if the
    other objects belong to the same signal.
  - Avoiding flickering status bar in library script with many EDIT commands.
  - Changed mouse button handling under Windows to improve application
    button selectability.
  - The progress bar in the status line of an editor window is now only
    displayed when it is actually active, and the percentage value is
    displayed outside of the bar under Windows.
  - When moving a part in a schematic causes net wires to be automatically
    generated, both ends of these wires are now checked to see if any
    junctions are missing or can be deleted (this only works if
    "Options/Set.../Misc/Auto set junction" is active).
  - Improved ERC's checks for unconnected net wires and missing junctions.
  - The parameter toolbar in board context now contains a combo box where
    angles can be selected and entered (instead of the former four buttons
    for R0...R270).
  - Panning is now done through Click&Drag with the center mouse button (no
    longer with the Ctrl button). If you want to have the old functionality
    back you can add the line

    Interface.UseCtrlForPanning = "1"

    to your ~/.eaglerc file. Note, though, that the
    Ctrl key is now used for special functions in some commands, so when using
    these special functions (like selecting an object at its origin in MOVE)
    with this parameter enabled you may inadvertently pan your draw window.
  - Zero length airwires are now displayed as X-shaped crosses to improve their
    visibility.
  - The new fill styles Stipple1, Stipple2, Stipple3 and Stipple4 (numerical
    values 12..15) can be used to have layers be drawn and erased without
    disturbing each other.
  - Improved library update in case of device sets with a large number of
    package variants.
  - When switching through the wire bend styles with the right mouse button
    (for instance in the WIRE command), the Shift key reverses the direction
    and the Ctrl key toggles between corresponding bend styles.
  - When a Mark is active, the relative coordinates are now also displayed as
    "polar coordinates" (radius + angle), indicated by "(P ...)" in the
    coordinate display. This can also be used to measure the distance between
    any two points.
  - Coordinates entered in the command line or in scripts can now be given
    relative to the mark, as polar coordinates, and can simulate a right mouse
    button click, which is mainly useful to select a group (see "Help/Editor
    Commands/Command Syntax").
  - Dialog input fields that accept decimal numbers now automatically
    convert the ',' (or whatever the local decimal point is set to) into
    a real decimal point ('.').
  - When loading a board/schematic pair that doesn't indicate consistency, a
    consistency check will now be performed automatically.
  - The sheet selection combo box in the action toolbar now contains an entry
    named "remove", which can be used to remove the current sheet from the
    schematic.
  - The highlighted objects from SHOW now stay hightlighted if a WINDOW
    command is given.
  - The Rich Text tag <author> no longer uses a smaller font.
  - The relative coordinate display now uses at least the mark's precision.
  - Editor windows now have a new menu entry "File/Open recent" which allows
    to easily reload recently used files.
  - Increased grid display pecision for mil and inch.
  - No more popup message for undefined or empty group, rather 'beep' and
    status message.
  - Avoiding unnecessary backups (for instance "*.b#1") when saving files
    that have not been modified.
  - Fixed EXPORT PARTLIST in case of long names or values.

* Bugfixes:

  - Fixed delimiting the undo buffer in CHANGE PACKAGE and CHANGE TECHNOLOGY.
  - The "Change Isolate" menu option is now also available in the package
    editor.
  - A polygon that consists only of two defined points is now rejected.
  - Fixed removing an ASSIGNed key from the 'eaglerc' file.
  - Fixed setting the default grid when changing the drawing type (package,
    symbol, device) inside a library.
  - Fixed canceling a command by pressing the "Cancel" button in a dialog
    (for instance the NET command was not completely terminated).
  - Fixed initializing the $EAGLEDIR variable when starting the program with
    './eagle' (was only a problem under Linux).
  - Fixed searching the 'eagle.scr' file in the current directory and handling
    directory paths in the -S option.
  - Fixed skipping unsuitable objects when pasting between different drawing
    types.
  - The User Language now generates an message if accessing a contact from a
    pin without a device context.
  - Fixed switching off the DRC check "copper against t/bRestrict" (polygons
    in the t/bRestrict layers were still checked).
  - Fixed renaming a package variant in the library editor.
  - Fixed displaying pads/vias in case an additional signal layer is activated
    with the DISPLAY command.
  - Fixed UL_AREA for packages and symbols in an UL_ELEMENT or UL_INSTANCE
    context, respectively.
  - Fixed detecting an error condition in accessing an uninitialized User
    Language variable while it is being defined.
  - Fixed storing NET_WIRE_WIDTH and BUS_WIRE_WIDTH in the eaglerc file.
  - Fixed double file name entries in the Control Panel under Windows after
    renaming files with upper-/lowercase.
  - Fixed refreshing the Control Panel tree after creating a new CAM job.
  - Fixed handling CAM job descriptions that contain double quotes.
  - Fixed handling mouse wheel events when zooming in/out (previously the
    given "Mouse wheel zoom" factor was applied twice for each event).
  - Fixed setting the focus in the DISPLAY and LAYER dialogs.
  - Fixed displaying 'not saved' in >LAST_DATE_TIME on printed output.
  - Fixed entering negative values in 'real' dialog fields.
  - Fixed raplacing an identical package from a different library.
  - Objects that don't cover any raster point are now virtually enlarged
    by the Autorouter to make them cover at least one raster point, so that
    the Autorouter can "see" them.
  - Fixed a problem when deleting a layer from within the DISPLAY dialog.
  - Fixed updating library devices with newly added packages.
  - Fixed handling value on/off in the library update.
  - The BOARD command no longer copies all package variants into the newly
    created board, but rather just the ones that are actually used. When
    loading a board from a previous version, the superfluous packages will
    automatically be deleted.
  - The Autorouter sometimes didn't route between objects where it
    actually should have been able to do so.
  - The 'Cancel' button sometimes didn't work when a message box was
    displayed while, for instance, running a script.
  - The ADD dialog didn't display all used libraries after a device has been
    added from the Control Panel.
  - Fixed handling layer of mirrored text wires in UL_TEXT.wires.
  - Fixed drawing objects attached to the cursor when doing Ctrl+MouseMove
    (wasn't drawn correctly under Windows).
  - Fixed the Technology parameter in EXPORTed library scripts (the values
    were not quoted).
  - Fixed mirroring labels in a schematic.
  - Fixed a crash if INVOKE was used in a board.
  - Fixed 'Replace all' in the text editor for several occurrences in the same
    line with different lengths of find and replace text.
  - Fixed a bug in the library update of standalone boards in case a pad was
    removed from a package.
  - Fixed CHANGE PACKAGE in case both devices have no connects.
  - Fixed flickering smashed texts when dragging parts.
  - Fixed displaying wires when zooming far into the drawing.
  - Fixed handling empty packages and symbols in CUT/PASTE.
  - Fixed setting the size of the ERRORS window.
  - The 'scale factor' and 'page limit' in the PRINT dialog are now limited
    to values >=0.
  - Fixed handling of net classes when renaming nets.
  - Added missing 'L' parameter to the format statement (FS) of GERBER_RS274X
    in eagle.def.
  - Fixed closing a project if the user doesn't have write access to the
    directory.
  - Fixed setting user defined default Design Rules when loading an existing
    library.
  - Fixed handling of objects that don't belong to any signal in the DRC, in
    case there are no signals with the default net class.
  - Fixed the header for Postscript files in 'eagle.def'.
  - Fixed UL_VIA.diameter[] for LAYER_TSTOP and LAYER_BSTOP in case the drill
    isn't larger than the stop limit in the Design Rules.
  - Fixed ADDing devices with '(' or ')' in their name.
  - Fixed a crash in GROUP/CUT in case only net labels where in the group.
  - Fixed handling packages that contain both pads and smds.
  - Fixed handling multiple smashed '>NAME' etc. texts in User Language
    Programs.
  - Fixed handling the layer of polygons when doing GROUP/CUT/PASTE with
    mirroring.
  - Fixed printing hatched polygons with "pos. Coord" option in the
    CAM Processor.
  - The CAM Processor no longer complains about layers that are enabled in
    the job but not used in the drawing.
  - Fixed 'dxf.ulp' to correctly display solder stop masks for pads, vias
    and holes.
  - Fixed rotating with right mouse button while moving an object with
    click&drag.
  - Fixed deleting a net wire that was connected to a supply pin (the remaining
    net wasn't renamed accordingly).
  - Fixed setting the >DRAWING_NAME parameter when creating a board from a
    schematic.
  - Fixed handling wires that ended exactly on a vertical polygon edge (the
    polygon was not considered to be connected to that wire).
  - Fixed closing ULP include file after an error message (text editor was
    unable to save the edited file under Windows).
  - Fixed checking empty (value) texts in the DRC.
  - Fixed printing under Linux after a previous print job has been canceled.
  - Fixed snapping bended wires if "Options/Set/Misc/Snap bended wires" is on.
  - Fixed buffer overflow in printf() with very long '%*' formats in ULPs.
  - Fixed handling SET WIRE_BEND while drawing a wire.
  - Fixed calculating zero length airwires in case there is another wire end
    point very close to these coordinates.
  - Fixed searching the library in the library path in case of
    "ADD part@libraryname".
  - Fixed execution of 'eagle.scr' in case there is a command following the
    EDIT command in the command line.
  - Fixed EXPORT SCRIPT in case the library description contains the backslash
    character.
  - Fixed emulating thin arcs on photoplotters.
  - Fixed some superfluous '*' in the Gerber RS274X output format.
  - Fixed an abort if a ULP accesses a schematic's nets from a board via
    project.schematic(SCH).
  - Fixed the location of pad names for pins in mirrored instances in
    the User Language.

Release notes for EAGLE 4.09r2
==============================

* CAM Processor:

  - The new command line option '-N' can be used to turn off the command line
    message prompts in the CAM Processor. This is mostly useful for fully
    automated CAM batch jobs.

* Bugfixes:

  - Fixed a case where the original pad/via shape was drawn in a supply
    layer (in addition to the thermal/annulus symbol). This also may have
    caused the autorouter to route a signal that actually had a supply layer
    (and therefore didn't have to be routed).
  - Fixed the DRC check between copper and Dimension lines with zero width.
  - Fixed reacting on system color changes in the Help window under Windows.
  - Fixed handling Pwr pins in the library update (consistency could be lost
    if the pins had a different sequence in the new symbol).

Release notes for EAGLE 4.09r1
==============================

* Bugfixes:

  - Fixed drawing SMDs with Roundness values other than 0 or 100 on photo
    plotters with fixed aperture wheels. Note that aperture tolerances are
    relative to the final object dimensions, so when drawing SMDs with
    Roundness the aperture actually used may be larger, even if only a
    negative tolerance value was specified. Also, the difference between the
    initially requested aperture and the actually used one may be a lot
    bigger than the absolute value of the tolerance would indicate.
    If you are processing CAM data for a board that contains SMDs with Roundness
    and you get an "Aperture missing" error regarding a Draw aperture, you can
    try specifying a negative draw tolerance of a few percent to enable
    drawing of the rounded SMDs (which will then be drawn as if they had a
    larger Roundness value).
  - Fixed handling GROUP rectangles with zero width (which caused a program
    crash).
  - Fixed printing drill symbols with Postscript in the CAM Processor in case
    the Pads or Vias layer was not activated.
  - Avoiding unjustified 'close but unconnected...' warnings in the ERC.
  - Fixed net class handling in forward annotation when splitting a net.
  - Fixed library update in case of CUT/PASTE from one schematic into another
    (there was no error message if a package variant was no longer available).
  - Added the missing "Cam Processor" entry to the pulldown menu in the
    schematic editor.
  - Fixed handling description when checking for modified CAM job.

Release notes for EAGLE 4.09
============================

Version number changed for final release.

Release notes for EAGLE 4.08r2
==============================

* Bugfixes:

  - Fixed deleting net segments from pins that overlap with another segment
    (in such cases it could have happened that the consistency between board
    and schematic was lost).

Release notes for EAGLE 4.08r1
==============================

* Bugfixes:

  - Fixed a problem when closing a window and canceling the "Save?" dialog.
  - Fixed library update in ADD when package variant is missing.

Release notes for EAGLE 4.08
============================

* Bugfixes:

  - Fixed another unjustified error message "Load error 293".

Release notes for EAGLE 4.07
============================

* Bugfixes:

  - Fixed unjustified error message "Load error 293".
  - Fixed a possible crash when closing a window in a script.

Release notes for EAGLE 4.06
============================

* Bugfixes:

  - Fixed checking rectangular objects versus circular objects in the DRC.
  - Fixed installing executable file and manual page under Linux.

Release notes for EAGLE 4.05
============================

* Bugfixes:

  - Fixed polygon calculation under Windows.
  - Fixed canceling the Autorouter during ripup.
  - Fixed handling circles in the autorouter (sometimes it routed right through
    them).

Release notes for EAGLE 4.04
============================

* DELETE command:

  - Net segments connected to a bus now keep their name when splitting segments.
  - Added a note to the online help of the DELETE command, regarding ripup of
    signal wires when deleting a part with SHIFT+Delete.

* ERC command:

  - In order to handle board/schematic pairs that have only minor inconsistencies,
    the user can now enable a dialog that allows him to force the editor to
    perform forward-/backannotation, even if the ERC detects that the files are
    inconsistent. This can be done by appending the line

    Erc.AllowUserOverrideConsistencyCheck = "1"

    to the ~/.eaglerc file.
    PLEASE NOTE THAT YOU ARE DOING THIS AT YOUR OWN RISK - if the files get
    corrupted in the process, there may be nothing anybody can do to recover
    them. After all, the ERC *did* state that the files were inconsistent!
  - The ERC now reports an error if supply pins with the same name are
    overwritten with more than one signal.

* EXPORT command:

  - The EXPORT SCRIPT command now sets the grid unit to 'mm' if the current
    grid isn't metric, in order to avoid loss of precision.

* INFO command:

  - The INFO command now displays the VIA diameter separately for outer and
    inner layers (as determined by the Design Rules), plus the value that has
    been originally defined by the user.
    The format is "Diameter = outer/inner (original)".

* OPTIMIZE command:

  - The OPTIMIZE command now also optimizes the "flat" wires in a board (i.e.
    those not being part of a signal).

* PACKAGE command:

  - The PACKAGE dialog now accepts an empty "Variant name" field and no longer
    requires the explicit entry of '' (two single quotes) to define a
    package variant with an "empty" name.

* TECHNOLOGY command:

  - The TECHNOLOGY command no longer asks before removing a Technology from
    a device.

* WIRE command:

  - In order to speed up execution of large scripts that produce many wires,
    'Set Optimizing Off' now also disables automatic wire splitting in scripts.

* User Language:

  - When running a ULP the internal search path for images will now be set to
    the ULP's directory.
  - The help page for Rich Text now contains a list of the supported image
    formats for the "<img...>" tag.
  - The new member function UL_LAYER.used can be used in a ULP to check if a
    given layer is actually used in a drawing.
  - The new builtin constants "path_...[]" and "used_libraries[]" can be used
    to determine the entries in the "Options/Directories" dialog and the
    currently used libraries from within a ULP.
    See "Help/User Language/Builtins/Builtin-Constants".
  - The new mode character 'F' in the 'output()' statement of the User Language
    can be used to force opening a file with an otherwise protected extension
    (*.brd, *.sch or *.lbr).

* Miscellaneous:

  - Improved speed of CAM Processor.
  - NET and SIGNAL commands are no longer terminated when canceling a
    'Connect...?' dialog.
  - Pad and via drill holes are no longer subtracted from polygons.
  - The position of the "splitters" in dialogs like for instance "ADD" are no
    longer stored as percentage values in the file ~/.eaglerc,
    but rather as absolute pixel values. The first time such a dialog is opened
    with this program version the splitter positions may therefore not be the
    same as when the dialog was left last time.
  - Polygons that would completely disappear after being calculated with RATSNEST
    are now shown on the screen with their original outlines. This allows editing
    or deleting them.
  - The string edit dialog now adjusts its width to completely show longer
    strings (for instance when editing a long bus name).
  - Command text buttons (defined with the MENU command) now stay pressed to
    indicate the currently active command (this does not apply to buttons that
    result in a submenu).
  - The Windows file dialog no longer checks for the existence of a file, thus
    allowing the user to leave out the filename extension when typing in a
    file name.
  - The command button groups are now separated by horizontal lines, which saves
    space in the command menu.
  - The default value for the solder stop mask ("Edit/Design rules/Masks/Stop")
    has been changed to a fixed value of 4mil.
  - The size of SMD names displayed when SET PAD_NAMES is on is now limited to
    20mil.
  - The "Description" field in the library editor and the right pane in the
    Control Panel can now be completely minimized with the splitter.
  - If a package variant or technology is no longer there (e.g. because it has
    been deleted or renamed) the user can now select a different one in the
    library update.
  - The automatic unit determination in dialog input fields can now be controlled
    by appending the line

    Interface.PreferredUnit = "x"

    to the ~/.eaglerc file, where "x" can be
    "0" for automatic unit determination (default)
    "1" for imperial units
    "2" for metric units.
  - The 'dxf.ulp' now has radio buttons to choose the unit of the generated
    data ('mm' or 'inch'), and outputs data in 'mm' with 4 decimal digits
    instead of 3.
  - When using the CAM Processor in command line mode it no longer stops if
    a warning message is given, but rather offers a prompt that allows the user
    to decide whether to continue or not.

* Bugfixes:

  - Fixed handling of upper/lowercase umlauts in removing/renaming library
    objects.
  - Fixed error handling if a non existing member function was used in a ULP.
  - Fixed library update error 403-1362.
  - Fixed library update in case a device set is no longer present in the
    library.
  - Fixed printing Thermal symbols.
  - Technologies can no longer contain lowercase characters.
  - Fixed handling devices with double quotes in their name in the Control Panel.
  - Fixed focus handling in 'Connect Nets' dialog.
  - The internal object counters are now checked against a safety limit in order
    to avoid overflows.
  - Fixed optimizing wires after MOVE.
  - Fixed layer in UL_POLYGON.contours and UL_POLYGON.fillings in case of
    mirrored polygons.
  - Fixed handling of PWR pins in library update.
  - Fixed exporting images.
  - Fixed handling printer specific page sizes under Windows.
  - Fixed updating libraries in case packages had been replaced in the board.
  - Empty values of smashed parts are no longer selectable by mistake.
  - Fixed handling '\' in the "Options/Directories" dialog under Windows.
  - Fixed displaying User Language dialogs under Windows.
  - Fixed handling Technology values that add up to exactly 13 characters.
  - The EXPORT SCRIPT command now explicitly generates a "-''" if a device
    does not contain the empty Technology.
  - Fixed handling lowercase characters when deleting Technologies.
  - Fixed splitting net segments with supply symbols.
  - Fixed EXPORTing net class for implicit PWR pins.
  - Fixed optimizing wires after deleting a group.
  - Fixed handling the PRINT option '-0'.
  - Fixed handling lines longer than 1000 characters in eaglerc.
  - Fixed handling "SET BEEP ON|OFF".
  - Fixed a possible crash that happened under Windows if the system date was
    outside the range 1970..2037.
  - Fixed parsing '(' in the command line (caused an error message when
    renaming a package variant that contained this character).
  - Fixed a possible crash that could happen if a part on a sheet was deleted
    with SHIFT+Delete, and that part was the last of this type in the schematic.
  - Fixed 'Shift-Deleting' parts with gates on different sheets.
  - The terminating ';' was missing for "Hole..." in exported scripts.
  - Fixed handling "WRITE @filename;".
  - Fixed handling directory paths after navigating with the file dialog.
  - Fixed the "...not saved" dialog in case an other board should be edited
    after a modification that changed both the board and the schematic (it
    didn't list the schematic as modified).
  - Fixed setting the net class of a newly drawn net or signal in case the
    net/signal name is specified in the command line.
  - Fixed library update in case a non-pwr pin became a pwr pin.
  - Fixed handling unconnected supply pins. They are now implicitly mapped to
    the same net name as any other overwritten supply pin with the same name.
  - Fixed handling "&xxx;" tags in the tree view of the control panel.
  - When drawing a new net/signal segment towards an existing one, the net
    class of the existing net/signal is no longer overwritten.
  - "File/Open/Text..." now always opens a text editor window, even if the file
    name has an extension that would indicate a different kind of window (like
    ".cam").
  - The library editor window is now refreshed after executing a script.
  - Closing a "Description" or "Connect" dialog with the system's close button
    now reacts correctly if the user selects not to discard changes.
  - When opening a file from the Control Panel with "File/Open/..." the proper
    filename extension is now added if it is missing.
  - Fixed naming nets if the NET command contains an explicit net name.
  - Fixed delimiting the undo buffer in the REPLACE command.
  - Fixed setting the directory in "Save as...".
  - Fixed handling command line PRINT parameters.
  - Fixed selecting objects that are close together.
  - Fixed using expressions as title in a dlgGroup.
  - The User Language no longer returns wires in layer 0.
  - Fixed PASTEing nets with different net classes than an existing net of the
    same name.
  - Fixed toolbar positioning.
  - Fixed checking user defined print borders against the printer driver's
    minimums.
  - Fixed library update in case of pins with '@' in their name.
  - Fixed handling pin names with '@' in the User Language.
  - Fixed handling parameter strings (like '>NAME') in ULPs in case the editor
    window was refreshed after a dialog.
  - Fixed handling the '>GATE' parameter String in ULPs.
  - Fixed UL_TEXT.wires() for mirrored texts of smashed elements.
  - Fixed calculating ratsnest when adding a part with many Pwr pins (this took
    a very long time).
  - Fixed page size of PS_DINA3 device in CAM Processor.
  - Fixed the polygon subtractor to handle cases where many identical objects
    have to be subtracted from the same polygon.
  - Fixed closing a window in a script that has been called from an other
    window.
  - Fixed version 3.5 compatibility mode in PACKAGE command.
  - Fixed the UL_PIN.contact function if called from a UL_PINREF context.

Release notes for EAGLE 4.03
============================

WARNING: Due to some necessary changes in the data structure once you edit
         a file with version 4.03 you will no longer be able to edit it
         with earlier versions!

         PLEASE MAKE BACKUP COPIES OF YOUR CURRENT BOARD-, SCHEMATIC- AND
         LIBRARY-FILES BEFORE EDITING THEM WITH VERSION 4.03!

* ADD command:

  - The ADD dialog now has a 'Drop' button that removes a library from the list
    of used libraries.
  - The ADD command can now fetch a particular gate from a device, without
    automatically fetching the MUST and ALWAYS gates, too.
  - Some users always want to use the device name as part value, even if the
    part needs a user supplied value. Those who want this can now append the line

    Sch.Cmd.Add.AlwaysUseDeviceNameAsValue = "1"

    to the ~/.eaglerc file.

* DELETE command:

  - The DELETE command now deletes an entire part when clicking on a gate
    with the Shift key pressed. In that case, the wires connected to the element
    in the board will not be ripped up.
  - The DELETE command now deletes the entire polygon when clicking on a
    polygon wire with the Shift key pressed.
  - The DELETE command now deletes the entire net or bus segment when clicking
    on a net or bus wire with the Shift key pressed.

* ERC command:

  - Since some people did not appreciate the new checks implemented into the
    ERC, these can now be suppressed by appending the line

    Erc.SuppressAdditionalWarnings = "1"

    to the ~/.eaglerc file.
  - The ERC now reports uninvoked MUST gates as errors.
  - The ERC now checks whether nets and signals have consistent net classes.
  - The ERC no longer checks pin overlaps within the same gate.

* EXPORT command:

  - The EXPORT IMAGE command now accepts the new keyword MONOCHROME to produce
    a black&white image.
  - EXPORT IMAGE now displays a 'wait' cursor if the operation takes some time.
  - EXPORT NETSCRIPT now outputs the net classes.

* INFO command:

  - The INFO command now displays the layer name.

* LAYER command:

  - The new option '??' can be used to suppress error messages when deleting
    a layer.

* UPDATE command:

  - The UPDATE command now accepts the parameters '+@' and '-@' which allow
    renaming the libraries contained in a drawing.

* VALUE command:

  - Some users don't want the warning message about a part not having a user
    definable value, so that warning can now be disabled by appending the line

    Warning.PartHasNoUserDefinableValue = "0"

    to the ~/.eaglerc file.

* Design Rules:

  - The DRC check "copper against t/bRestrict" can now be completely turned
    off through "Misc/Check restrict" in the Design Rules dialog. By default
    any copper objects in the Top and Bottom layers are checked against objects
    in t/bRestrict.
  - There are now checkboxes on the "Restring" tab that can be
    set to enable using the actual pad or via diameter in inner layers, too.
    By default this option is off for newly created boards, but will be set
    when updating a board from version 3.5 or earlier, since previous versions
    used the same pad/via diameter on all layers.
    TO IMPLEMENT THIS FEATURE IT WAS NECESSARY TO MODIFY THE DATA STRUCTURE
    IN A WAY SO THAT FILES EDITED WITH VERSION 4.03 CAN NO LONGER BE LOADED
    INTO EARLIER VERSIONS (OTHERWISE THE RESULTS MIGHT NOT BE CORRECT).
  - The Restring parameters in the Design Rules are no longer set to 0 when
    updating a board file from version 3.55 or earlier. They are now left at
    their default values and if the file contains any pads or vias that would
    become larger due to these new parameters, the user will pe prompted to
    confirm this and to adjust the Design Rules if necessary.
    When the CAM Processor loads a version 3.55 (or earlier) file, the Restring
    Parameters will still be set to 0, which makes sure that the result will be
    the same as in previous versions.
    When loading a file from version 4.0 or 4.01, the restring parameters will
    be checked, and if they are 0 the user will be prompted to confirm this and
    and to adjust the Design Rules if necessary.
  - The DRC now checks the Design Rules for plausibilities.
  - The DRC now only checks pads and smds, as well as any copper objects
    connected to them, against dimensions.

* Polygons:

  - The polygon named _OUTLINES_, which is used for calculating outlines, no
    longer needs to have an Isolate parameter of 0 (See "Help/Generating
    Output/Outlines data").
  - When calculating the _OUTLINES_ polygon, objects in the layers t/bRestrict
    and Dimension were wrongly subtracted.

* User Language:

  - New data members UL_PART.deviceset, UL_DEVICESET.library,
    UL_DEVICE.library and UL_SYMBOL.library.

* CAM Processor:

  - The CAM Processor can print schematics again.

* Miscellaneous:

  - Improved selectability of arcs.
  - Speeded up saving a file when there are many entries in the CP tree and the
    network is slow.
  - The "Always vector font" flag that is stored in a drawing file can now
    be controlled via "Options/Set/Persistent in this drawing" (previously
    this was only possible by entering the SET command in the command line).
  - The vector font characters '&', '@' and '~' have been improved.
  - The 'dxf.ulp' now outputs texts always with the builtin vector font by
    default (this can be changed through a new checkbox in the dialog).
  - Junctions are now also set automatically when a part is placed, and they
    will be automatically deleted if a part or a net wire is deleted.
  - The automatic opening of the project folder at program start (or when
    activating a project by clicking on its gray button) can now be disabled
    by appending the line

    ControlPanel.View.AutoOpenProjectFolder = "0"

    to the ~/.eaglerc file.

* Bugfixes:

  - The Autorouter sometimes routed too close towards pads, which could result
    in short circuits (this only happened when the pad shape was different in
    the various routing layers).
  - A crash could happen in EXPORT IMAGE unter Linux with 8bpp X-servers.
  - A crash could happen when removing a sheet with the REMOVE command.
  - When using the CAM Processor device GERBER_RS274X to generate data for
    a supply layer, the thermal gaps were missing.
  - When printing several sheets the caption was not printed correctly under
    Windows with some printers.
  - The CAM Processor's GERBERAUTO didn't always create all apertures when
    pads or vias had different shapes in the various layers.
  - Resource usage under Windows was drastically reduced.
  - Entering command names that were too long caused a crash.
  - The values used with the CAM Processor command line options -h, -w, -x and
    -y have been wrongly rejected.
  - Values for Width and Height defined in 'eagle.def' were not copied into
    the CAM Processor window, and values entered in the CAM Processor were not
    used.
  - CUT didn't work with the right mouse button.
  - The library update mechanism sometimes didn't recognize different symbols
    or packages, which made it impossible to add certain parts to a schematic.
  - If the resulting bitmap was too large, the EXPORT IMAGE sometimes crashed
    or didn't create any output (without an error message).
  - When creating new library objects it was possible to enter names that
    contained blanks.
  - When EXPORT IMAGE was used in a newly loaded library with no object being
    edited, the program crashed.
  - A possible crash under Windows that happened when the program was left with
    Alt-X was fixed.
  - The User Language function fileglob() didn't work if the filename pattern
    contained a blank.
  - Sometimes some layers were not displayed in the CHANGE PACKAGE preview.
  - The selected window area was not restored correctly when a schematic was
    loaded from a project file.
  - Avoiding ERC warnings about net wires being too close if there is a bus
    wire at that point.
  - Under Windows the UPDATE command didn't search for libraries case
    insensitively.
  - Fixed changing the layer of a polygon in a package.
  - When printing more than one sheet on Windows 2000 the offset of the second
    and following sheets was incorrect with some printer drivers.
  - Empty lines in text files were not printed.
  - Editing the DESCRIPTION of a directory produced faulty line ends under
    Windows.
  - There was no error message when the DESCRIPTION file couldn't be written.
  - Speeded up DRC processing and deleting errors when the large cursor is
    used.
  - Reading a Design Rules file didn't work if the description contained the
    '=' character.
  - When a package was renamed, the package variant list wasn't updated.
  - The Control Panel did not open the tree to the initial project if the
    "Projects" path contained more than one entry.
  - The Control Panel tree was not refreshed after operations like rename,
    copy etc.
  - The chapter describing the User Language function 'lookup()' was missing
    from the German online help under Windows.
  - Relative symbolic links were not expanded correctly under Linux.
  - Pads and vias didn't keep their drills open inside signal polygons.
  - The DRC now reports texts in signal layers that don't use the builtin
    vector font (this check can be disabled through "Check texts" on the
    Design Rules' "Misc" page).
  - The DRC and Autorouter sometimes crashed when the board contained a large
    arc or circle.
  - Polygon wires no longer react on CHANGE STYLE.
  - The SIGNAL command did not ask the user whether to combine newly defined
    signals with existing ones, but rather silently connected them.
  - When a dialog is canceled, any running script will now also be canceled.
  - Previously entered text in the text editor's 'Find' dialog is now selected.
  - Avoiding 'wait' cursor in dialogs during lengthy operations.
  - EXPORT IMAGE didn't use the board's Design Rules.
  - A UL_GATE that has been derived from a UL_INSTANCE did not provide the
    correct x and y values.
  - When loading an Autorouter control file that contained a routing grid with a
    precision that exceeded the internal editor resolution of 0.0001mm, the
    routing grid was rounded to the internal resolution.
  - When a file was opened using the Control Panel's context menu, the buttons
    in the editor window's toolbars didn't work correctly under Windows.
  - The program crashed when a device was added to a schematic via Drag&Drop
    from the Control Panel, and the library needed to be updated from an older
    version.
  - Some paper sizes were not handled correctly in the PRINT command under Linux.
  - When a device that supports colors has been used in the CAM Processor,
    selecting "Layer/Show selected" or "Layer/Show all" disabled the display of
    the color numbers in the layer list.
  - Removing a key assignment with "ASSIGN key;" didn't work.
  - The ADD command didn't add a new part if a part name was given and there
    were still unused NEXT gates of that type available in an already existing
    part.
  - The 'Stop' button wasn't disabled correctly when pressed in the LABEL
    command.
  - Supply layers were not printed correctly if the print was done rotated.
  - Fixed missing cursor in text editor if the first character in a line is
    something like '{'.
  - When using the MOVE command with "click&drag" mode, releasing the mouse
    button outside the drawing area is now ignored (as was the case in version
    3.55).
  - The next command was sometimes skipped when an error message was given in
    a script file.
  - When routing a large board with many layers and a fine grid, the autorouter
    sometimes needed extremely much memory. This has been improved to make it
    work with less memory.
  - When using a fine routing grid the Autorouter sometimes inserted an extra
    (jagged) wire segment at the starting point of a trace.
  - When the routing grid was not an integer multiple of the internal editor
    resolution of 1/10000mm (e.g. 6.25mil), the Autorouter sometimes didn't
    round the resulting coordinates corrrectly.
  - Fixed updating the contents of a dlgComboBox when a statement is executed.
  - Fixed the bahaviour of the "Again" function in the text editor in case
    nothing has been searched yet.
  - Fixed setting colors, fill styles and long strings when adding new layers
    from a library to a board or schematic drawing.
  - Fixed processing textual coordinate values (sometimes in script files only
    every other coordinate pair was recognized).
  - Fixed recalculating the "Window Fit;" area of a sheet after a library
    update.
  - User Language Dialogs sometimes became inoperative after canceling a
    message box.
  - The bounding box of texts will be recalculated in order to fit exactly to
    the text size when using vector font.
  - The CAM Processor didn't correctly write the offsets into the info files.
  - The PASTE command in a schematic didn't always forward annotate the net
    classes of the pasted nets correctly.
  - Fixed handling empty strings in dlgComboBox.
  - Fixed updating libraries in the PASTE command.
  - Sometimes small white "dots" appeared when a file was newly loaded.
    These also caused zero-length/zero-width apertures to be generated in
    Gerber output.
  - When renaming a file in the Control Panel, a possibly existing target file
    is no longer overwritten.
  - Sometimes under Windows a click on a push button was not recognized when
    the mouse button was released while moving the mouse pointer away from the
    push button.
  - Fixed handling parameters (e.g. package variant names) containing '='.
  - Fixed creating new projects and folders in case several branches in the
    Control Panel tree view contained the same directory.
  - Sometimes thermal and annulus symbols were not correctly generated for
    supply layers if a window refresh in the board editor was caused while the
    CAM Processor was running.
  - CHANGE PACKAGE sometimes didn't map the pad assignments correctly, which
    could cause wrong connections in the board and a loss of consistency.
  - The ROUTE command no longer generates a via at points where there is
    already a wire in the same layer.
  - The layer of SMDs was sometimes not recognized correctly.

Release notes for EAGLE 4.01
============================

* Bugfixes:

  - The 'bom.ulp' didn't print the "Description" if no database was in use.
  - 'bom.ulp' now uses '.htm' as default extension when saving as HTML.
  - Added missing warning messages to the ERC help page.
  - Holes will be subtracted from signal polygons even if the Distance
    parameter for Copper/Dimension in the Design Rules is 0 (for better
    compatibility with version 3.55).
  - Fixed restoring the visible area in a schematic when loading a project.
  - Fixed handling umlauts in NAME command.
  - Sometimes text files were not correctly recognized and thus not listed
    in the Control Panel's tree view.
  - Making sure a very small circle with Width=0 is drawn as at least one pixel
    on the screen (this is sometimes used as a reference marker).
  - Fixed not limiting the zoom factor for small drawings.
  - Avoiding flickering hour glass cursor when loading many libraries in ADD.
  - No longer displaying text origins in device set drawing.
  - Fixed checking whether a pad or via is connected to a polygon.
  - Fixed calculating airwires between partial polygons.
  - Checking if coordinates are within the allowed range.
  - Fixed calculating polygons with widths less than 1 micron.
  - The "Use all/none" option was missing in the context menu of the "Libraries"
    entry in the Control Panel if there was only one entry in the
    "Options/Directories/Libraries" path.
  - Sometimes a faulty "used" indicator appeared in the Control Panel on
    directories that are not project directories.
  - After loading Design Rules from a file into the Design Rules dialog, the
    percentage values of e.g. the Restring parameters were not updated
    correctly.
  - Fixed switching back the mouse cursor from the four-way selection cursor.
  - Fixed editing the library description from a symbol drawing.
  - The "mouse click" symbol was not displayed correctly in the Linux help.
  - Changing "Options/Set/Display mode" did not propagate the parameter change
    to the other windows.
  - Polygons and non-continuous wires in packages and symbols were not handled
    correctly in the User Language.
  - Since version 4.0 a bus name that is used with a range can no longer end
    with a digit. However, if such a name was already present in a drawing from
    a previous version and a net was extracted from that bus, the program
    crashed. Now there will be an error message in such a case.
  - If a library was saved and parts from that library were added very quickly
    (within the same second, for example in a script) it could happen that the
    current version of the library was not used, but rather the previously
    loaded version.
  - The obsolete description of DISPLAY_MODE FAST has been removed from the
    online help.
  - Fixed a bug in the library update mechanism that caused an error code
    of 400-1363.

Release notes for EAGLE 4.0
===========================

* Control Panel:

  - The Control Panel now has a "Tree View" which provides an overview over
    all areas of EAGLE, like Libraries, User Language Programs, Projects etc.
  - The Control Panel's tree view supports "Drag&Drop" to copy or move files
    and directories. Files (like ULPs or scripts) can also be dragged over
    an editor window and dropped there; this results in the file being RUN
    or executed by the SCRIPT command inside the respective window. Devices
    and packages can also be dragged and dropped onto editor windows. Dropping
    an entire library onto a board or schematic editor window will perform
    a library update.
  - Objects in the tree view have a context menu that can be accessed by
    pressing the right mouse button.
  - The menu option "Save project as..." is no longer available. New projects
    can now be created via the context menu in the "Projects" tree item, or
    by selecting "File/New/Project" from the Control Panel.
  - The path settings in "Options/Directories" can now use the special names
    "$HOME" and "$EAGLEDIR" to access the user's home directory or the EAGLE
    installation directory, respectively.
    If these are symbolic links, they will be expanded.
  - The new "Auto backup" feature will automatically save any modified
    drawing into a safety backup file after a certain time.
    See "Help/Automatic backup" for details.

* New Project Structure:

  - The names of files that are under the current project directory are
    no longer written as absolute paths into the 'eagle.epf' file, but rather
    relative to the project directory. This allows for complete project
    directories to be easily copied or renamed.
  - A project is now held in a subdirectory that contains a file named
    'eagle.epf' (which stores the location and settings of open windows).

* Converting projects from previous versions:

  - Previous versions of EAGLE used individually named project files (*.epf)
    to store project information. Beginning with version 4 a project is stored
    entirely in a subdirectory, and that directory contains a file with the
    fixed name 'eagle.epf'.
  - The easiest way to convert projects from older versions is to create one
    directory for each project and copy that project's '.epf' file into this
    directory under the name 'eagle.epf'. The name of the project in version 4
    is the name of the project's directory.
  - In the Control Panel use the "Options/Directories" dialog to enter the
    name of the directory that contains your project subdirectories into the
    "Projects" field.

* User Interface:

  - The textual command menu can now be configured to display aliased
    command buttons as well as submenus (see HELP MENU for details).
  - Changes made in the "Options/User interface" dialog now take effect
    immediately for open editor windows.
  - The cursor inside a layout or schematic editor window can now be set
    to a "large" crosshair cursor (see "Options/User interface").
  - The "Delete" icon was changed from a pencil with an eraser to an 'X'.
  - The "Split" icon was changed to better indicate what will happen.

* Keyboard and mouse control:

  - Alt-0 no longer popups up the window list, but leads directly
    to the Control Panel.
  - Pressing the Ctrl key while moving the mouse now scrolls the
    draw window in any direction.
  - The mouse wheel now zooms in and out in editor windows (zoom factor can be
    adjusted in "Options/User interface/Mouse wheel zoom", a value of '0'
    disables this feature and the sign of this factor defines the direction
    of the zoom operation).

* Screen display:

  - The default for "minimum visible text size" has been changed to 3.
  - The display mode parameter FAST has been dropped.
  - By default the zoom factor in editor windows is limited so that the
    resulting virtual drawing area does not exceed the 16-bit coordinate range.
    This is necessary to avoid problems with graphics drivers that are not
    32-bit proof. If the graphics driver on a particular system can handle
    coordinates that exceeed the 16-bit range, "Options/User interface/Limit
    zoom factor" can be switched off allow larger zoom factors.

* Design Rules:

  - EAGLE now supports a full set of Design Rules that are stored inside
    the board file (and can also be saved to disk files). Both the Design
    Rule Check and the Autorouter will use the same set of rules.
  - Newly created boards take their design rules from the file 'default.dru',
    which is searched for in the first directory listed in the
    "Options/Directories/Design rules" path.
  - Cream mask values are now measured "inwards" and thus have a positive sign.
  - The parameters AnnulusConduct and ThermalConduct are no longer available.
    There are now checkboxes in the Design Rules dialog's "Supply" tab that
    define whether a Thermal or Annulus symbol shall have a "Restring" or not.
  - In order to assure that existing boards yield the same results when
    producing CAM data after they have been updated to version 4, the minimum
    restring parameters for the outer layers are set to 0 in the design rules
    (this allows the existing pads and vias to keep their defined diameters).
    The user should adjust these parameters to some reasonable values and run
    a design rule check after adding new parts from version 4 libraries.

    NOTE: The above has been changed in version 4.03 - see release notes for
    version 4.03!

    Also, the new design rule parameter that controls the minimum distance
    between objects in signal layers and the board dimensions (default: 40mil)
    will be set to 0 if a board that is updated from an older version contains
    any signal polygons.  The reason for this is that in previous versions
    polygons didn't take the board dimensions into account when they were
    calculated, but starting with version 4 polygons keep the minimum distance
    defined in "Edit/Design rules/Distance/Copper/Dimensions" from the boards
    dimensions. In order to guarantee that updated boards will yield the same
    results when producing CAM data with version 4 this parameter is set to 0.
    Note that this will also have an impact on the autorouter, so the user
    should adjust this parameter to some reasonable value.

* Net Classes:

  - Nets and Signals now have a new parameter called "Net Class".
  - The new command CLASS is used to define and select net classes.
  - The CHANGE command has a new option 'class' to change the net class
    of a net or signal.

* Polygons:

  - When calculating polygons, the minimum distances defined in the design
    rules and net classes will be taken into account. Therefore the default
    value for the Isolate parameter of newly created polygons is now 0. If a
    particular polygon is given an Isolate value that exceeds that from the
    design rules and net classes, the larger value will be taken.
  - The new parameter 'rank' defines if and how polygons are subtracted from
    each other. When updating existing files, polygons in signals will get
    a rank of '1', while polygons in packages will get rank '7'.
  - Polygons are now checked in the Design Rule Check if they have the same
    'rank'.
  - Sometimes the polygon subtractor didn't go through a gap where, according
    to the actual widths and minimum distances, it should have.
  - Polygons in the t/bRestrict layers are now subtracted from signal polygons
    in the Top and bottom layer, respectively.

* Design Rule Check:

  - The DRC now runs a lot faster.
  - Progress is now displayed in a progress bar (the progress rectangles
    are no longer displayed and the SET variables DRC_SHOW and DRC_COLOR
    are now obsolete).
  - Since the DRC is now much faster its error messages are no longer
    stored in a separate '*.drc' file (this separate file sometimes
    caused board and DRC error messages to be out of sync).
  - Polygons from different signals with the same 'rank' are checked
    against each other.
  - All objects in layers Top..Bottom (including arcs, circles etc.)
    are now checked.
  - The 'overlap' and 'minimum distance' check are no longer separate checks.
  - The DRC no longer checks an individual signal against everything else.
    The newly introduced "Net Classes" can be used to do this.
  - The rectangle for a selective DRC can now be defined with "click&drag"
    (just as in the WINDOW command).
  - Holes are no longer checked in the "Grid" check (only pads, vias, smds
    and wires in signal layers are checked).
  - Any objects in signal layers within a package are now checked against each
    other.
  - Several new checks have been added (see the DRC dialog for more information
    about the new parameters).
  - Due to a calculation problem the DRC sometimes reported very small errors
    where in reality there were no errors.

* Long strings:

  - All names, values and texts can now be of any length.
  - The User Language constants regarding name lengths still exist,
    but the program uses these constants only for formatted output
    as in the EXPORT command. They are still present for compatibility
    only.
  - There is no more limit to the number of members in a bus (bus index
    values are limited to 0..511).
  - Bus member names can now contain any characters, except ':', ',', '[', ']'
    and blanks.

* Wire styles:

  - Wires now have a new parameter 'Style', which can be set to one of the
    following values:

    Continuous      _______________  (default)
    LongDash        ___ ___ ___ ___
    ShortDash       _ _ _ _ _ _ _ _
    DashDot         ___ . ___ . ___

  - The variable for setting the bend type of a wire has been renamed from
    Wires_Style to Wire_Bend to avoid confusing the two parameters.
  - Note that the DRC and Autorouter will always treat wires as "Continuous",
    even if their style is different. Wire styles are mainly for electrical
    and mechanical drawings and should not be used on copper layers. It is
    an explicit DRC error to use a non-continuous wire as part of a signal
    that is connected to any pad.

* Text fonts:

  - Texts can now have three different fonts:
    'Vector'  the program's internal vector font (as used in previous versions)
    'Proportional'  a proportional pixel font (usually 'Helvetica')
    'Fixed'  a monospaced pixel font (usually 'Courier')
  - When updating drawings from older versions, all texts are converted to
    'Proportional' font, except for those in layers Top...Bottom, tRestrict
    and bRestrict, since these texts probably need to be subtracted from
    signal polygons, which only works with the 'Vector' font.
  - The program makes great efforts to output texts with fonts other than
    'Vector' as good as possible. However, since the actual font is drawn
    by the system's graphics interface, 'Proportional' and 'Fixed' fonts
    may be output with different sizes and/or lengths.
    See HELP TEXT if you don't want texts to be displayed with fonts other
    than 'Vector'. You can set the user interface option "Always vector font"
    to always have texts output with the builtin vector font.
  - When creating output files with the CAM Processor, texts with fonts
    other than 'Vector' may be output using the 'Vector' font instead.
    This happens if the actual output device is unable to produce texts
    with different fonts.
  - If a text with a font other than 'Vector' is subtracted from a signal
    polygon, only the surrounding rectangle is subtracted. Due to the
    above mentioned possible size/length problems, the actually printed
    font may exceed that rectangle. Therefore, if you need to subtract
    a text from a signal polygon it is recommended that you use the 'Vector'
    font.
  - The 'Ratio' parameter has no meaning for texts with fonts other than
    'Vector'.
  - The CHANGE command has a new option "Font".

* Pads and Vias:

  - The diameter of pads and vias is now derived from the drill diameter
    using the Design Rules (the pad and via diameter '0' is now allowed
    and results in a diameter that is derived from the current design rules).
    If a pad is defined with a diameter that exceeds the one that would
    result from the current design rules, the larger diameter is taken.
    The default value for the diameter of newly created pads and vias is now
    '0' to allow the Design Rules to define the actual diameters.
  - Pads can have different shapes on Top and Bottom (they will always be
    'round' on the inner layers).
  - The via shape now only applies to the outer layers (they will always be
    'round' on the inner layers).
  - The diameter of pads with shape X/YLongOct now defines the smaller side
    of the pad (formerly the wider side). Existing files will be modified
    accordingly during the update.
  - By default vias no longer generate Thermal symbols in supply layers.
    There is a new design rules parameter that enables Thermal symbols to
    be generated for vias in supply layers and signal polygons.
  - When updating files from older versions, pads and vias with diameter <=
    drill will be replaced with a 'hole' of that drill diameter. This only
    works for unconnected pads; if a pad is connected to a pin (in a library
    or schematic) or to a signal (in a board) it can't be converted to a hole
    and the user must decide what to do in such a case. This conversion has
    become necessary because pads and vias now always have a 'restring' that
    is determined by the design rules.
    If a consistent board/schematic pair is updated to version 4 and such pads
    are replaced with holes in only one of the drawings, the board/schematic
    pair will become inconsistent. If that happens you will need to modify
    the respective package/device definition to make things consistent again.

* Round SMDs:

  - SMDs have a new parameter "Roundness", which can range between 0 and 100
    and defines the percentage by which the corners are "rounded". A value
    of 0 (default) results in a rectangle, while a value of 100 results in
    a circular shape (if the x and y dimension of the SMD are the same),
    which can be used for BGAs.
  - The SMD command accepts roundness values as numbers with a leading '-'
    (to be able to distinguish it from the SMD size values).
  - The CHANGE command has a new option "Roundness".

* New Library structure:

  - What was called a "Device" in previous versions is now called a "Device Set".
    A "Device Set" consists of the gate definitions and several actual devices,
    implemented through "Package Variants"
  - The PACKAGE command can now assign several different package variants
    to a device (as in 7400N, 7400D,...).
  - The new command TECHNOLOGY can be used to define various "technology"
    variants for a device's package variants (as in 74LS00N, 74S00N,...).
  - The CHANGE command has the new options PACKAGE and TECHNOLOGY, which
    can be used to select from the packages and/or technologies a device
    set defines. This can be done from within the schematic or board.
  - The new command DESCRIPTION can be used to provide detailed textual
    information about a device, package or library.
  - The CONNECT dialog now allows copying pin/pad connections from an other
    package variant. Only those package variants are offered in the "Copy from"
    combo box that have the same pad names as the current package variant
    (only connected pads are checked).
  - The CONNECT dialog now asks the user if he want's to discard any changes
    before canceling the dialog.
  - The CONNECT command can now handle gate names that contain periods.
  - The device editor now displays a list of package variants, a preview of the
    current package and the description of the device.
  - Since it is now possible to "completely" define a device with all
    package and technology variants, the default setting of the "Value"
    parameter has been changed to "Off".
  - The meaning of the "Value" parameter in a device set is now as follows:
    + "Value Off" means there is no user definable value, i.e. the value of
      a part is defined by the dievice name (including, if present, technology
      and package variant). A device like "74LS00N" would be an example.
    + "Value On" means this device needs a user defined value to be fully
      specified. A resistor is an example.
    Even in the "value off" case the user can (after a confirmation dialog)
    change a part's value to handle any special cases that might otherwise
    cause problems. Any CHANGE TECHNOLOGY or CHANGE PACKAGE command that is
    executed after such a change will set the value back to the device name.

* Automatic Library update:

  - If a library has been modified after parts or packages from it have been
    added to a schematic or board, the new command UPDATE can be used to
    automatically update all used library objects with their latest version
    (see "Help Update").
  - The UPDATE command can be selected from the "Library" pulldown menu in a
    board or schematic, or from the context menu of a library in the Control
    Panel. It is also possible to drag&drop a library from the Control Panel
    onto a schematic or board drawing and perform the update that way.

* Bill Of Material:

  - The User Language Program 'bom.ulp' to generate the "Bill Of Material"
    has been rewritten. It now has a dialog in which the user can
    interactively generate the BOM, pulling in additional data from a
    user defined database file. Use "RUN bom.ulp" and click on the "Help"
    button for more information.

* Generating Outlines for milling prototypes:

  - The User Language Program 'outlines.ulp' can be used to generate the data
    necessary to control a milling machine for generating a prototype board.

* User Language:

  - The User Language now supports user defined dialogs as well as standard
    file dialogs and message boxes.
  - The RUN command now accepts additional arguments that are available
    to the ULP as 'argc' and 'argv' parameters.
  - Data can now be read into a ULP.
  - The new lookup() function can be used to perform database lookups.
  - The new fileglob() function can be used to do a directory search.
  - The new fileerror() function can be used check for I/O errors.
  - The 'exit()' function can now have a string parameter which is sent
    to the editor window and executed as a command string.
  - ULPs can now include other ULP files with the new #include directive.
  - The new #usage directive can be used to provide information about a ULP.
  - The new object UL_DEVICESET is used to access device sets in a library.
  - The builtin statement device() has been renamed to deviceset() to conform
    with the new library structure.
  - UL_POLYGON has a new member 'rank'.
  - UL_POLYGON has new members 'contours()' and 'fillings()' to access
    the calculated polygon data. The 'dxf.ulp' now uses these new members
    to draw the actual shape of calculated polygons.
  - The new object UL_CLASS is used to access net classes.
  - UL_BOARD and UL_SCHEMATIC have new members 'classes()'.
  - UL_NET and UL_SIGNAL have new members 'class'.
  - UL_WIRE has new members 'style' and 'pieces()'.
  - UL_TEXT has a new member 'font'.
  - The data members 'diameter' and 'shape' of UL_PAD and UL_VIA are now layer
    dependent and thus require the layer number for which the data shall be
    retrieved, because depending on the new Design Rules diameters and shapes
    of pads and vias can be different in the various layers. The syntax is
    now, e.g., pad.diameter[LAYER_TOP] to get the pad diameter in layer 1.
    Existing User Language Programs need to be edited to conform to this new
    syntax. See "Help UL_PAD/UL_VIA" for further details.
    The 'dxf.ulp' now generates the pads and vias separately in each active
    layer, including stopmask layers.
  - The data members UL_SMD.dx and UL_SMD.dy can now have an optional layer
    index to retrieve the dimensions in the t/bStop and t/bCream mask layers.
    The 'dxf.ulp' now generates mask data if those layers are active.
  - New builtin constants INT_MAX, INT_MIN, REAL_EPSILON, REAL_MAX and REAL_MIN
    (see "Help/User Language/Builtins/Builtin Constants").

* Script files:

  - Script files can now call other scripts (as long as no recursive
    call is made).
  - Script files can now contain comments. Everything after (and uncluding)
    a '#' character will be ignored. '#' characters inside quotes have no
    special meaning. Note that script labels (e.g. "BRD:") and continuation
    characters ("\") must not be followed by anything else than white space,
    and therefore can not be followed by comments (otherwise they loose
    their special meaning).
  - The 'eagle.scr' file is now first searched for in the current project
    directory (which is equal to the current working directory in case there
    is no project open) and then in the directories listed in the Control
    Panel's "Options/Directories/Scripts".

* Autorouter:

  - The Autorouter can now route "through" signal polygons (this can be
    controlled by the new cost factor 'cfPolygon'). A side effect of this
    is that a connection that has been made by the polygon before the
    Autorouter was started may be lost if a track generated by the Autorouter
    "splits" the polygon. Therefore, even if the Autorouter reaches 100%,
    the final result (after recalculating the polygon by RATSNEST) may be
    below 100%.
  - The Autorouter control parameters are now stored inside the board file.
    They can be saved to and loaded from external files via the Autorouter
    dialog. Existing control files will be automatically read and stored in
    the board file when updating files from previous versions (the old *.ctl
    file then becomes obsolete and will not be read when the autorouter is
    started - any changes made to such a file with a text editor are ignored!).
  - The Autorouter and DRC now use the same set of Design Rules. The old
    Autorouter parameters are stored in their corresponding DRC parameters,
    except for the following:

    + Instead of the separate 'mdWireDimension' and 'mdViaDimension' there is
      now only a single 'Copper/Dimension' parameter. This parameter will be
      set to the last of the two 'md*' parameters from the *.ctl file (which
      typically is 'mdViaDimension').
    + The 'mdWireRestrict' and 'mdViaRestrict' parameters are ignored because
      the minimum distance between any copper (except pads and smds) and a
      restrict area is now 0.
    + The 'tpViaDiameter' parameter is ignored because the actual via diameter
      is now generated from the via drill and the restring parameters.
    + The 'tpWireWidth' and 'tpViaDrill' parameters are stored in the default
      net class 0.

    When saving Autorouter control parameters to disk, the minimum distance
    parameters are no longer part of that file.
  - There can now be any number of 'Optimize' passes. By default there are
    now 4 'Optimize' passes.
  - Each pass can be separately activated or deactivated.
  - The Autorouter can now route different wire widths and minimum distances
    simultaneously by using "Net Classes".
  - The minimum distance parameters are no longer defined in the Autorouter
    dialog, but rather in the Design Rules dialog.
  - The track parameters (wire width and via diameter) are now defined in
    the Design Rules dialog (absolute minimums) and the Net Classes dialog.
  - The minimum routing grid is now 0.02mm (about 0.8mil).
  - The default control parameters and the internal handling of cfChangeDir
    have been modified to avoid jagged tracks.
  - The value 99 for the cfNonPref parameter now causes the router to
    completely avoid traces that are not in the preferred direction of the
    respective layer. You should carefully decide if this behaviour is really
    what you want. To avoid unexpected effects with existing boards, the value
    99 will be silently changed to 98 when updating older files.
  - With very small routing grids the Autorouter sometimes routed a little bit
    too close towards round pads/vias.
  - Sometimes the autorouter didn't go through a gap where, according to the
    actual widths and minimum distances, it should have.

* ADD command:

  - The ADD command can now be used with wildcards ('*' or '?') to find
    a specific device. The ADD dialog offers a tree view of the matching
    devices, as well as a preview of the device and package variant.
  - To add directly from a specific library, the command syntax

       ADD devicename@libraryname

    can be used. 'devicename' may contain wildcards and 'libraryname' can
    be either a plain library name (like "ttl" or "ttl.lbr") or a full
    file name (like "/home/mydir/myproject/ttl.lbr" or "../lbr/ttl").
  - If a device or package shall be added, and there is already such an object
    (with the same name from the same library) in the drawing, an automatic
    library update will be performed which replaces the existing object in
    the drawing with the current version from the library.
  - The new command UPDATE can be used to update all parts in a board or
    schematic with modified library versions (see "Help Update").

* CHANGE command:

  - CHANGE LAYER for wires and polygons now works between any layers within
    packages and symbols.

* CONNECT command:

  - Pressing the SPACE key in the CONNECT dialog while a list element has
    the focus will now perform the 'connect' or 'disconnect' action,
    respectively.

* DELETE command:

  - If the last supply symbol of a given type is deleted from a net segment
    that has the same name as the deleted supply pin, that segment is now given
    a newly generated name (if there are no other supply symbols still
    attached to that segment) or the name of one of the remaining supply
    symbols.

* DISPLAY command:

  - The new parameters '?' and '??' can be used to control what happens if
    a layer that is given in a DISPLAY command does not exist in the current
    drawing. See "Help Display" for details.

* GROUP command:

  - If the selected group is empty, the GROUP command no longer displays
    a message box saying "Group is empty". It rather prompts that message
    in the status bar (with a beep) and stays active for a new group
    definition.

* ERC command:

  - The ERC now lists the package names when reporting parts/elements with
    inconsistent packages.
  - The ERC now detects inconsistencies between the implicit power and supply
    pins in the schematic and the actual signal connections in the board. Such
    inconsistencies can occur if the supply pin configuration is modified
    after the board has been created with the BOARD command. Since the power
    pins are only connected "implicitly", these changes can't always be forward
    annotated. If such errors are detected, forward-/backannotation will still
    be performed, but the supply pin configuration should be checked!
  - The ERC now checks for missing junctions and overlapping wires and pins.

* ERRORS command:

  - The ERRORS dialog is no longer modal (it stays "on top" of the editor
    window) and can be kept open while resuming normal editing in the editor
    window.
  - The various error types are now listed more detailed.

* EXPORT command:

  - The EXPORT can now export image files (BMP, PNG, etc.).
    See "Help/EXPORT" for details.

* NET and BUS command:

  - If a net wire is placed at a point where there is already another net
    or bus wire or a pin, the current net wire will be ended at that point
    (in previous versions the user had to click twice to end a net wire).
    The same applies to a bus wire that is placed at a point where there
    is already another bus wire. This function can be disabled with
    "SET AUTO_END_NET OFF;", or by unchecking
    "Options/Set/Misc/Auto end net and bus".
  - If a net wire is placed at a point where there are at least two other
    net wires and/or pins, a junction will automatically be placed.
    This function can be disabled with "SET AUTO_JUNCTION OFF;", or by
    unchecking "Options/Set/Misc/Auto set junction".
  - If a bus name is used with a range, that name must not end with digits,
    because it would become unclear which digits belong to the Name and which
    belong to the range.

* PASTE command:

  - When pasting objects into a drawing that already contains earlier
    (different) versions of these objects, an automatic library update will be
    performed which replaces the existing objects in the drawing with the new
    versions from the paste buffer.

* PRINT command:

  - The PRINT dialog's "Page setup" now allows border values that are smaller
    than the initial values derived from the printer driver. To get back to
    the original default you can enter '0'. Note, though, that your actual
    printer may not be able to print that close to the page limits.
  - The printer settings are no longer stored in the project file, but are now
    stored in the user parameters ('eaglerc').

* REMOVE command:

  - The REMOVE command can now handle device, symbol and package names with
    extension (for example REMOVE name.pac). If the name is given without
    extension, you have to be in the respective mode to remove an object
    (i.e. editing a package if you want to remove packages).

* RENAME command:

  - The RENAME command now allows '.' in names.
  - The RENAME command can now handle device, symbol and package names with
    extension (for example RENAME name1.pac name2[.pac] - note that the
    extension is optional in the second parameter). If the first parameter
    is given without extension, you have to be in the respective mode to
    rename an object (i.e. editing a package if you want to rename packages).

* REPLACE command:

  - The REPLACE command can no longer be used with active forward- and
    backannotation. This is due to the now complete definition of a device
    set with all its package variants. Use the CHANGE PACKAGE command to select
    one of the defined package variants, or use the UPDATE command to update a
    package with a modified version from the same library.

* SET command:

  - The SET options for Thermal and Annulus parameters as well as the Solder
    Stop and Cream mask data have been removed.
    These values are now defined in the Design Rules.
  - The SET variables DRC_SHOW and DRC_COLOR are now obsolete (progress in the
    Design Rule Check is now displayed in a progress bar).
  - The SET variable MAX_ERROR_ZOOM is now obsolete. The ERRORS dialog is no
    longer modal (it stays "on top" of the editor window) and zooming can be
    done with the usual WINDOW commands or buttons.

* SHOW command:

  - Highlighted objects are now kept highlighted during subsequent window
    operations.
  - Pressing ESCape in the SHOW command now lowlights the currently highlighted
    object.

* USE command:

  - The USE command is now mainly for use in script files.
  - The actually used libraries can now be comfortably selected in the
    Control Panel.

* CAM Processor:

  - The CAM Processor no longer supports matrix printers. Use the PRINT
    command to print to the system printer.
  - The CAM Processor no longer prints schematics. Use the PRINT command instead.
    (As of version 4.03 the CAM Processor can print schematics again).
  - The command line option -I is no longer available, since the CAM Processor
    can now be used freely in the Freeware version.
  - Output is now only possible into files. If data shall be sent to a COM
    or LPT port under Windows the UNC filename of a queue attached to that
    port has to be used.
  - If the "Section" text in a CAM Processor section consists of a string
    like "Title: Descriptive text...", the "Title" will appear on the section's
    tab, while the "Descriptive text..." will only be visible in the "Section"
    field.
  - CAM Processor jobs can now have a description.
  - The diameter of octagonal pads in RS274-X has been increased by a factor of
    1.08239 to compensate for the different interpretation of pad diameters in
    EAGLE and RS274-X.
  - Wires are no longer shortened in the CAM Processor in order to keep the
    drills open. Only devices that can actually remove pixels from the output
    can now keep the drills open (currently only the Postscript devices "PS"
    and "EPS" can do this).
  - The new CAM Processor device PS_INVERTED can be used to produce inverted
    Postscript output.

* Parameter storage:

  - User specific parameters are now stored in an "eaglerc" file.
    At program start, parameters are read (in the given sequence) from the
    files

      <prgdir>/eaglerc                    (Linux and Windows)
      /etc/eaglerc                        (Linux only)
      $HOME/.eaglerc                      (Linux)
      $HOME/eaglerc.usr                   (Windows)

    where <prgdir> means the directory that contains the EAGLE program file.
    If no environment variable HOME is defined, the <prgdir> will be used
    instead. When the program ends, the current values of all parameters
    (if any of them have changed) are written to the eaglerc file in the HOME
    directory.
    Under Linux "$HOME" stands for the environment variable HOME.
    Under Windows "$HOME" is either the environment variable HOME (if set)
    or the value of the registry key "HKEY_CURRENT_USER\Software\Microsoft\
    Windows\CurrentVersion\Explorer\Shell Folders\Personal", which contains
    the actual name of the "My Documents" directory.
  - The file 'eagle.cfg' is not read any more.
  - Key assignments made with the ASSIGN command are now stored in the user
    specific parameters.

* Command line options:

  - The options '-A' and '-T' are now obsolete (thermal and annulus data
    is now defined in the Design Rules).
  - The options '-B' and '-M' are now obsolete (solder stop and cream mask
    data is now defined in the Design Rules).
  - The option '-C' is now obsolete, since the CAM Processor no longer
    supports matrix printers (all printing is done with the PRINT command).
  - The options '-Z' and '-Y' are now obsolete (drill symbols are
    configured in "Options/Set/Drill" and are stored in the user specific
    "eaglerc" file).

* Bugfixes:

  - When printing several sheets at once, the >SHEET always displayed the
    number of the currently edited sheet.
  - When saving a file with more than one dot in its name the name was
    cut off.

* Miscellaneous:

  - The DOS and OS/2 platforms is no longer supported.
  - Due to changes in the file data structure you will most likely be asked
    whether to run the ERC when loading a board/schematic pair created with
    an earlier version of EAGLE.
  - Files from earlier versions of EAGLE may contain library objects with
    the same names. This was caused by PASTE or ADD operations with modified
    devices or packages. Version 4 no longer allows this to happen, and
    therefore needs to make sure updated files do not contain multiple
    objects with the same name. In order to assure this, the update routine
    adds the '@' character and a number to the names of such library objects.
  - The library editor can now edit devices and symbols, even if the user's
    license does not contain the schematic module.
  - Avoiding multiple 'Save?' prompts for boards and schematics that are
    connected via f/b annotation.
  - When a file is modified while updating from a previous version the resulting
    update report is now presented in a separate text window.

