]> git.pond.sub.org Git - empserver/blobdiff - doc/CHANGES4.X
Update change log for 4.3.33
[empserver] / doc / CHANGES4.X
index 2f7dde14cacce20fbfcc496688c43e81157bfa0d..5c718c1590794202ef97cd8d23c5f5c4ed942490 100644 (file)
-Changes to Empire 4.3.30 - Thu Apr 26 18:14:49 UTC 2012
+Changes to Empire 4.3.33 - Sun Mar  1 10:10:31 UTC 2015
+ * The add syntax deprecated in 4.3.29 is now gone.
+ * The explore, move, test, transport syntax deprecated in 4.3.27 is
+   now gone.
+ * The bmap flag syntax deprecated in 4.3.27 is now gone.
+ * Stricter configuration validation:
+   - Reject odd WORLD_X instead of making it even silently.
+   - Reject odd WORLD_Y.
+   - Reject missiles that lack capability VTOL instead of adding VTOL
+     silently.
+   - Reject ships that can carry planes, but have neither capability
+     plane nor miss, instead of adding miss silently.
+ * Outlaw ships that can drop depth charges, but not fire.  No such
+   ships exist in the stock game.  4.3.31 permitted them, but keeping
+   them working has turned out to be bothersome.
+ * Changes to fire and torpedo:
+   - Don't disclose that the torpedo's path to the target is blocked
+     by land when the target is out of range.  Screwed up in 4.2.2.
+   - When a submarine gets hit by return fire after firing its deck
+     gun, the defender again learns the submarine's uid and type, just
+     like for surface ships.  This is how it worked before Empire 2.3.
+   - When a submarine gets hit by return fire after launching a
+     torpedo, the defender again learns the submarine's uid.  Before
+     Empire 2.3, he learned uid and type.
+   - Print "Kaboom" even when the target is out of range.
+   - Always clear missions when firing guns or dropping depth charges.
+     Screwed up when missions were added in Chainsaw.
+   - Report "Sector X,Y ready to fire" instead of "Sector X,Y firing",
+     because the sector isn't firing, yet, then.  Also report ships
+     and land units ready to fire.
+   - Suppress bulletin when player shells or torpedoes his own ship.
+ * When artillery on a bridge span shelled down the supporting bridge
+   head, the bridge fell and the artillery drowned alright.  But then
+   the bridge rose right back.  Broken in 4.3.14.
+ * Fix board to charge mobility even when defender is less than 100%
+   efficient.  Broken in Empire 2.
+ * The convert command charged security land units mobility until
+   4.3.16 broke that.  Drop this undocumented feature instead of
+   fixing it.
+ * Report the owner of ships sunk by return torpedoes instead of POGO.
+   Screwed up when return torpedoes were added in Chainsaw.
+ * Don't disclose uid, type and owner of torpedoed submarines.  The
+   latter leaked through the news.
+ * Changes to bomb:
+   - Fix damage to mobility when bombing planes.  Has always been
+     broken.
+   - Include position when reporting bombing of a land unit, like we
+     do for ships.
+   - Suppress bulletin when player bombs his own assets.
+   - Report bombing of plane to owner once, not twice.
+   - Don't permit bombing of dead planes.  Missed when we did the same
+     for dead ships and land units in 4.3.16.
+ * Changes to retreat and lretreat:
+   - Be less loquacious when changing orders.
+   - Deprecate pseudo-condition 'c'.  Use retreat path 'h' to cancel
+     retreat orders.
+   - Change query syntax from "retreat SHIPS" to "retreat SHIPS q".
+     Consistent with mission, and makes prompting for arguments more
+     usable.  Keep accepting the old syntax for now, but deprecate it.
+   - Reject invalid retreat paths instead of silently ignoring invalid
+     characters during retreat.  Unfortunately, the path needs to be
+     valid even with deprecated pseudo-condition 'c', where it's not
+     actually used.  This might break some existing usage.
+   - Fail without charging BTUs when the player gives no conditions.
+   - Fix infinite loop when third argument contains '?'.  Broken in
+     4.3.16.
+ * Rename retreat flag "torped" to "torpedoed" in xdump retreat-flags.
+   This could conceivably break clients.  No actual breakage is known.
+ * Rewrite automatic retreat to fix its many bugs and inconsistencies
+   with navigate and march:
+   - When a ship defeats a boarding party, but suffers enough damage
+     to sink, retreat the victim's group (if any) instead of ship#0.
+   - Permit retreat exactly when navigate and march would be
+     permitted.  Before, land units happily retreated while on the
+     trading block (forbidden with march since 4.0.9), crewless
+     (likewise since 4.0.0), kidnapped in a foreign sector
+     (inconsistent since land units were added in Chainsaw 3), loaded
+     on a ship (likewise) or a land unit (inconsistent since that
+     became possible in 4.0.0).  Ships retreated while on the trading
+     block (forbidden with navigate since 4.0.9).
+   - Land units can now retreat into foreign sectors exactly when they
+     could march there: when the sector is allied, or when the land
+     unit is a spy (with the usual risks).
+   - Land units can now retreat into mountains.
+   - Land unit retreat now resets fortification.
+   - Group retreat now happens only along a single path.  Before, you
+     could scatter a group in several directions, and even retreat in
+     far away places.  The latter was a highly abusable design flaw.
+   - Bulletins provide more useful information in fewer words.  In
+     particular, they always report the end sector.
+   - Fix retreat after a torpedo hit to include the torpedo damage in
+     its mobility cost calculation.
+   - When retreat runs into a sector that cannot be entered, don't
+     consume the retreat direction.
+   - Don't charge mobility for retreating in direction 'h'
+   - You can no longer make your own ships or land units retreat.
+   - Clear mission only when the ship or land unit actually retreats.
+   - Land unit group retreat could corrupt the land unit file or crash
+     the server.  Screwed up when Chainsaw added land unit retreat.
+   - Fix ship retreat when helpless.  Surface ships claimed to retreat
+     in a bulletin, but that was a lie.  Submarines didn't even
+     pretend.
+ * Don't tell the player he sunk a ship when it survives an attack
+   with bomb, fire, launch or torpedo, but sinks during retreat.  bomb
+   even reported where it had retreated to when it sank.
+ * Land mine fixes, affecting march and, if option INTERDICT_ATT is
+   enabled, attack and assault:
+   - Fix march sub-command 'm' to not let non-engineers hit mines.
+     Broken in Empire 2.  Fixed in 4.0.17 for ships only.
+   - Engineers now risk hitting mines twice instead of once on sector
+     entry, just like minesweepers.
+   - No sweeping with zero mobility.  Screwed up when Chainsaw added
+     land units.
+ * Navigate and march cleanup and bug hunt:
+   - Stop on non-fatal mine hits, too.  Before, we carried on, and
+     ships that lost all crew were left behind only at the next
+     prompt.  Note that we already stop on non-fatal interdiction
+     damage since Empire 2.
+   - Fix use-after-free when a flagship or leader stays behind without
+     a prompt following immediately.
+   - When something other than movement charged mobility, the charge
+     was lost on the next movement, unless there was a prompt in
+     between.  For instance, mobility lost to mine hits could come
+     back.
+   - Fix parser not to get confused by white-space.
+   - Make ships use radar always, not just most of the time.
+   - Land units now use radar automatically like ships.
+   - Report flagship and leader changes immediately, and always.
+     Before, they were reported only around a prompt.
+   - Wipe mission and retreat orders less eagerly.  Before, they where
+     sometimes wiped even for ships and land units the command
+     rejected.
+   - Give up fortification only when a land unit actually moves or
+     sweeps.
+   - Report where exactly ships and land units sweep mines.
+   - Nicer error messages for sub-command 'm'.
+   - Fix sub-command 'm' not to drop engineers without mobility from
+     the march.
+   - When denying ships entry to an unfriendly sector with canals,
+     don't disclose whether it's above 2%.
+   - Both navigate and march now require all their ships and land
+     units to be in the same sector.  Support for scattered ships and
+     land units complicates the code and blows up the test matrix.
+     It's also rather obscure; I suspect accidental use has been more
+     frequent than intentional use.
+   - Check for sector abandonment before anyone marches instead of
+     right before moving the last land unit.  Fixes a bug that could
+     scatter the group when something interferes while waiting for the
+     player to confirm abandonment.
+   - When marching a mixed group of spies and non-spies into a
+     non-allied sector, remove non-spies from the group, and move the
+     spies.  Before, only the spies before the first non-spy moved
+     into the non-allied sector, which could scatter the group.
+     Screwed up when 4.0.0 added spy units.
+   - Don't permit trains to march out of sectors without rail.
+   - When navigating a mixed group of ships with and without canal
+     capability into a canal, remove incapable ships from the group,
+     and move the capable ships.  Before, only the ships before the
+     first incapable ship moved into the canal, which could scatter
+     the group.  Broken in 4.3.0.
+   - Fix navigate buffer overrun for impossibly long paths taken.  No
+     remotely sane game configuration provides a ship fast enough to
+     trigger it.  Broken in 4.0.0.
+ * Remove option SAIL (commands follow, mquota, sail, unsail; ship
+   selectors mquota, path, follow) and autonav (commands order,
+   qorder, sorder; ship selectors xstart, xend, ystart, yend,
+   cargostart, cargoend, amtstart, amtend, autonav) due to multiple
+   issues:
+   - The orders are executed at the update.  Crafty players can use
+     them to get around the update window.
+   - Usability is poor, especially for autonav.
+   - Few players use them.
+   - Documentation is inaccurate.
+   - Code has bugs, some of them critical.
+   - It's almost 1300 lines of rather crufty code nobody wants to
+     touch.
+   - Code sharing complicates maintenance of the navigate command.
+ * Configuration tables reader and empdump improvements:
+   - Better error messages.
+   - Export now omits redundant data by default.  Use empdump -c to
+     include it.
+   - Import can cope with omitted sectors and realms.  Omitted sectors
+     become sea, and omitted realms become empty.
+   - Column order is now unrestricted.  Before, some tables required
+     an ID field to come first.
+   - Support splitting any table.  Before, tables sect, news, lost,
+     realm, game, infrastructure could not be split.
+   - Support strings longer than 65535 characters.
+ * Fix empdump -i to reject strings that are one character too long.
+   The bug affected ship table columns path, name and rpath, land
+   table column rpath, nat table columns cname, passwd, ip, hostname
+   and userid.
+ * Reject nat selectors relations, contacts and rejects, because they
+   don't actually make sense.  They exist just for xdump.
+ * Drop the code to resolve player IP address.  It's been disabled
+   since 4.2.13.  Deprecate nat selector hostname.
+ * Fix bridge spans next to a bridge tower or head taking damage to
+   fall when they should with EASY_BRIDGES off.  Has always been
+   broken.
+ * Fix bridge spans next to a collapsing bridge tower to fall when
+   they should with EASY_BRIDGES on.  Broken in 4.3.12.
+ * When you scrap a plane, you get crew back only proportionally to
+   plane efficiency.
+ * Changes to build:
+   - Fail the attempt to build a bridge not next to land or bridge
+     tower more nicely.
+   - Deities can now build anywhere, without materials, work or money.
+   - Building a plane no longer uses at least one military.  Military
+     for crew are now rounded just like the other materials.  The
+     special case dates back to 4.2.3.
+   - Report missing materials more nicely.
+   - You now need the required materials rounded up to be present.
+     Actual use is still randomly rounded.  Before, crafty players
+     could exploit the rounding to save materials, or build
+     sufficiently cheap things without materials.  In the stock game,
+     linf and many plane types could be built without materials.
+ * Remove option TREATIES.  Usability is very poor, virtually nobody
+   uses them, conditions are incomplete, the code is buggy, and a
+   burden to maintain.
+ * Test suite improvements:
+   - Coverage extended to commands build, navigate, march, fire,
+     torpedo, retreat, lretreat, falling bridges, automatic retreat,
+     command info page completeness, and the empdump utility program.
+   - Maintainability of tests much improved.
+   - Test harness refactoring.
+   Much work remains.
+ * Adjust stack sizes.  Stack overflow was possibly for tiny worlds.
+ * Fix start, stop to not operate on dead units when used by a deity.
+   Screwed up when start, stop were extended to units in 4.3.6.
+ * Nukes can be grouped into stockpiles, just like ships can be
+   grouped into fleets.  The new command stockpile does for nukes what
+   fleet does for ships.  Likewise the new nuke selector stockpile.
+ * wingadd no longer costs BTUs, for consistency with fleetadd and
+   army.
+ * Changes to edit:
+   - Keep missions centered on ship, plane or land unit centered when
+     teleporting it.  Screwed up when Chainsaw added missions.
+   - Preserve "does not follow" when copying ships.  Preserve "no
+     distribution center" when copying sectors, and don't mess up
+     coastal flag.  Screwed when Chainsaw added the means to copy a
+     ship or sector.
+   - You can now edit nukes.
+   - Suppress bulletin on no-op ship, plane, land unit location
+     change.  Screwed up in 4.3.32.
+   - You can now edit ship, plane and land unit types.
+   - Changing the owner of a ship, plane or land unit away from POGO
+     now works.
+ * Fix "make uninstall" to remove HTML info pages (which are not
+   installed by default) and directory share/empire/.
+ * Fix "make install" to remove stale formatted info pages.
+ * Code refactoring and cleanup.
+ * Info file fixes and improvements.
+
+Changes to Empire 4.3.32 - Sun Aug 25 07:55:34 UTC 2013
+ * Fix an LWP stack overflow observed on AIX 7.1.
+ * Fix portability bug in standalone client Makefile
+ * Fix portability bug in configure test for curses.
+ * The break command now honors new designation of sanctuaries.
+ * Changes to edit, give, setsector, setresource, swapsector:
+   - Generalize edit to multiple objects: accept
+     <SECTS|SHIPS|PLANES|LANDS|NATS> argument instead of just
+     <SECT|SHIP|PLANE|LAND|NAT>.  Obsoletes setsector and setresource.
+   - Make interactive "edit c" detect and handle concurrent updates,
+     like other edits do.
+   - Don't reprint edited object when done with it.
+   - Always print a message describing the actual change.  Necessary
+     to give the deity a chance to catch unexpected changes, e.g. a
+     player moving away stuff right before a give command, leaving
+     fewer items than the deity intends to take.  Existing messages
+     improved, missing ones added.
+   - Consistently send bulletins to the victim / beneficiary of deity
+     meddling, except when changing stuff mortals can't see.
+   - Report much more deity meddling in the news (subject to option
+     GODNEWS).
+   - More robust argument checking.  Before, careless deity edits
+     could cause internal errors.  Much bounds checking was missing,
+     inconsistent or wrong.
+   - Teleport planes and land units to carrier on load.
+   - Refuse to move planes and land units on carriers.
+   - Fix stack smash in edit l key 'L' that can mess up sector file.
+   - Fix setsector to again print actual landmine change for occupied
+     sectors.  Broken in 4.3.31.
+   - Suppress bulletins for acts of god to himself.
+   - Suppress news for acts of god to gods.
+   - Suppress news and bulletins on no-op acts of god.
+   - Always send bulletins from POGO.  Name the meddling deity in the
+     bulletin text instead.  Inconsistent since Chainsaw.
+   - Make interactive edit accept empty key argument again.
+   - Make interactive edit treat blank input like empty input.
+   - Don't let edit put a land unit or plane on two carriers
+   - Do not disclose when a deity destroys a ship, tell the ex-owner
+     only that he lost it.
+   - edit p and u now show the edited unit like edit s.
+   - edit s now shows the edited ship even when its owner is invalid.
+ * Clean up output of satellite, land, sorder and mission for world
+   sizes between 200 and 1998.  cutoff and level still have issues
+   there.
+ * Plug harmless file descriptor leak on OpenBSD with IPv6.  Broken in
+   4.3.31.
+ * New doc/contributing explains how to contribute to Empire.
+ * Code refactoring and cleanup.
+ * Info page, manual page and documentation fixes and clarifications.
+
+Changes to Empire 4.3.31 - Sun May 12 16:58:34 UTC 2013
+ * Fix read beyond end of conditional argument on missing operand.
+ * Don't put broken links into info pages formatted as HTML.
+ * Permit ships that can drop depth charges, but not fire.  No such
+   ships exist in the stock game.
+ * Consistently require guns for dropping depth charges.  Before, only
+   the fire command required guns (since 4.3.12 and before 4.0.6).
+ * Change econfig key rollover_avail_max from 0 to 50.
+ * Make sector production more predictable.  Commands production and
+   budget are now a bit more accurate.
+ * Fix bugs that messed up xdump lost and xdump trade on big endian
+   hosts (broken in 4.3.8), and made the server fail during startup on
+   most big endian hosts (broken in 4.3.12).
+ * Build process robustness fixes.
+ * Use "Level: Obsolete" to mark obsolete info pages, and drop "info
+   Obsolete".
+ * Server now uses IPv4 format for IPv4-mapped addresses.  Simplifies
+   safe use of econfig key privip.
+ * Server logs a few more network connection details.
+ * Fixes and workarounds for econfig key listen_addr "" (which is the
+   default) when the system has both IPv4 and IPv6 addresses
+   configured:
+   - Server accepted only IPv6 connections on Windows and BSDs.  Fix
+     to accept IPv4 ones, too.
+   - Except for OpenBSD, where the fix doesn't work.  Accept IPv4
+     connections instead of IPv6 ones there, and document how to get
+     IPv6 accepted instead.
+   - Linux systems are frequently configured in a way that makes the
+     server accept only IPv4 connections.  Document workaround: use
+     listen_addr "::".
+ * Change fairland island size probability distribution: roll two dice
+   instead of one.  This makes extreme sizes much less likely.
+ * Make fairland record the island number in the deity territory.
+ * Fix extension of market bidding time when high bidder changes.
+   Introduced broken in 4.0.7, with insufficient fixes in 4.0.9 and
+   4.2.0.
+ * Fix market not to mess up ridiculously high unit prices.  Has been
+   broken since 4.0.0 introduced the market.
+ * Fix melting of big piles of stuff by ridiculously heavy fallout.
+   Has been broken since fallout exists.
+ * Fix crash on edit s, p, u key 'U' with negative argument.
+ * When a deity builds ships or land units in foreign sectors, they're
+   given to the sector owner.  This lets POGO build them, and it's how
+   build works for planes and nukes.
+ * Fix PRNG (pseudo-random number generator) seeding to resist
+   guessing: seed with a kernel random number.  If we can't get one,
+   fall back to a hash of high-resolution time and process ID.  This
+   should happen only on old systems or Windows.  Far worse than a
+   kernel random number, but far better than just low-resolution time.
+   Fairland's seeding used to be low-resolution time and process ID,
+   but regressed in 4.2.20 to just time.
+ * Switch PRNG from BSD random() to Mersenne Twister.  This is a is a
+   proven, high-quality PRNG.
+ * Fix tiny error in distribution of some die rolls.
+ * Increase land unit retreat chance and nuclear damage's chance to
+   destroy a nuke by one percentage point, for simplicity.
+ * Merge news items a bit more aggressively.
+ * Fix a year 2038 bug in news item merging.
+ * Retire the nightly build.
+ * New make target check.  Just a few tests for now, derived from the
+   smoke test that used to be part of the nightly build.
+ * Really fix accepting connections from "long" IPv6 address.  The fix
+   in 4.3.23 could mess up player's host address in player output and
+   logs, and cause extra "Last connection" messages.
+ * Take ship cost into account when picking missile interdiction
+   target.  Broken in 4.3.8.
+ * Really fix give, setsector and setresource not to wipe out
+   concurrent updates.  The fix in 4.3.27 was insufficient.
+ * Fix setsector not to disclose number of landmines to occupier.
+ * Make capital fail more nicely when the sector is unsuitable.  Its
+   argument must now be a single sector.  Before, it silently picked
+   the first suitable one when the argument selected several.  Has
+   always been that way, and never documented.
+ * Changes to option GODNEWS:
+   - Deity command give could downgrade the deity's relations to the
+     sector owner when GODNEWS was enabled.  No more.
+   - Likewise, deity commands edit and setsector can no longer
+     downgrade the victim's relations to the deity.
+   - News enabled by GODNEWS no longer affect news headlines.
+ * Fix bomb, drop, fly, paradrop, recon and sweep to again accept a
+   destination sector equal to the assembly point.  Broken in 4.3.27.
+ * Fix portability bug in configure test for Windows API.
+ * More user friendly server startup: journal open errors are detected
+   while the server still runs in the foreground, which makes it
+   possible to complain to stderr and to exit unsuccessfully.
+ * Market changes:
+   - Forbid selling conquered populace.  Only relevant when the deity
+     allows selling civilians, which is probably a bad idea.
+   - Permit selling military by default.
+   - Forbid selling ships and land units carrying unsalable cargo.
+ * Scrapping ships and land units now spreads the plague
+ * Don't let scrap give away civilians, kill them off instead.
+ * Pilots and air cargo now spread the plague.
+ * Don't let fly and drop give away civilians.
+ * Fix fly to permit flying civs to a carrier in an occupied sector.
+   Broken in 4.2.17.
+ * Don't let planes fly to a carrier without sufficient space.
+   Before, planes that didn't fit were teleported home, which could be
+   abused.  Broken in 4.3.17.  Almost the same bug was previously
+   fixed in 4.2.17.
+ * Fix tend to foreign ships:
+   - Refuse to tend civilians to foreign ships.
+   - Don't leak friendly foreign ships' commodity cargo.
+   - Continue with remaining target ships after skipping a foreign one
+     when tending a negative amount of commodities.
+   All broken when Chainsaw 2 added tending to allies.
+ * march sub-command 'm' can now sweep own landmines.
+ * Land units no longer sweep allied landmines, except when executing
+   march sub-command 'm'.  They don't hit them since 4.3.27.  Sweeping
+   was forgotten then.
+ * Fix bmap commands not to parse empty flags argument as "revert".
+   Broken in 4.3.27.
+ * Code refactoring and cleanup.
+ * Info page fixes and clarifications.
+
+Changes to Empire 4.3.30 - Tue May 22 18:34:52 UTC 2012
+ * Disable damage to base sector or ship when missile explodes on
+   launch for now, because damage done to other missiles there can be
+   wiped out in some cases.  Broken in Empire 2.
+ * Fix navigate and march not to wipe out concurrent updates.
+   Abusable, but probably not worthwhile.
+ * Fix some buffer overruns in fairland.  Has always been broken.
+ * Fix arm to require nuke and plane to be in the same sector.  A
+   remote nuke got teleported to its plane when the plane moved.
+   Broken in 4.3.3.
  * Change login command kill (used by client option -k) to kill less
    ruthlessly: send a flash message and try to flush output, exactly
    like a server shutdown does.
  * Fix server shutdown to wait for player threads to reach a safe
-   state.  Without that, we could fail to update the treasury, record
-   play time, and write log entries.  The old code is racy.  It goes
-   back to Empire 2.  It was patched in 4.2.10, 4.2.12, 4.2.20, 4.3.6,
-   4.3.10 and 4.3.23, but the core problem remained unaddressed.
* When shutdown aborts a command, the terminating player thread could
-   still get stuck sending output, and thus lose the race just
-   mentioned.  Broken in 4.3.23.
+   state.  Before, player threads raced with shutdown, and failed to
+   update the treasury, record play time, and write log entries when
+   they lost.  Bug goes back to Empire 2.  Patched partially or
+   unsuccessfully in 4.2.10, 4.2.12, 4.2.20, 4.3.6, 4.3.10 and 4.3.23.
  The race was hard to lose in practice, until an unrelated
+   "simplification" in 4.3.23 could get player threads stuck sending
+   output after shutdown aborted a command.
  * Idle timeout changes:
    - The grace period for clients to complete login and logout is now
      separate from the idle timeout.  Configurable with new econfig