EAGLE Version 4.0 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 4.08r2!

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

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

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 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 cancelling 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 cancelling 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 adding 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 cancelling 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 ~/.eaglerc{{{win eaglerc.usr}}
    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 adding 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.

* 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.
  - 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.
  - 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 add 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 adding 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 adding 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 adding 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 cancelled, any running script will now also be cancelled.
  - 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 cancelling 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 cancelling 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 form 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.

