]> git.pond.sub.org Git - empserver/blobdiff - doc/CHANGES4.X
Final polish for 4.3.13
[empserver] / doc / CHANGES4.X
index e3f3b8fa3574acee6f18601721eb3d90b64a59f4..a6ae38b2def3b80a3ced3672280fbb97ced7c0f8 100644 (file)
@@ -1,3 +1,387 @@
+Changes to Empire 4.3.13 - Tue Apr 15 19:03:11 UTC 2008
+ * Work around strptime() lossage on some systems.  Fixes the parsing
+   of the schedule file there.
+ * New selector maxnoc for xdump version.
+ * Fix initialization of realms in newcap.  Broken in 4.3.12.
+ * Fix add for status arguments active, god, delete.  Broken in
+   4.3.12.
+ * Info file, manual page and documentation fixes.
+
+Changes to Empire 4.3.12 - Wed Apr  2 05:35:06 UTC 2008
+ * Fix rounding error in update that could result in more babies than
+   food permits, and negative food.
+ * Fix a bug that could lead to unfair thread scheduling under
+   Windows.
+ * Fix ship and land unit missile interdiction and ballistic missile
+   interception to require a proper base.  Before, missiles could
+   launch from anywhere for that.
+ * Launch bug fixes:
+   - Don't allow launching from unowned sectors.
+   - Don't destroy missiles stuck on foreign ships.
+   - Use up the supplies required for launching an asat only when it
+     actually launches.
+   - Don't ignore satellites' fuel use.
+ * Deity command newcap now requires its second argument (sanctuary
+   coordinates).  Before, it tried to pick a suitable location when
+   none was given.  The code implementing this feature had problems,
+   and it's not worth fixing: it is obscure, and rarely (if ever)
+   used: no conscientious deity would use it for a real game, and for
+   blitzes fairland does a better job.
+ * Keep track of flying planes properly.  This fixes a number of bugs:
+   - While the bomb command awaited pin-bombing target input from the
+     player, other players could interact with the pin-bombers and
+     escorts as if they were sitting in their bases: spy them, damage,
+     capture, load, unload, or upgrade them, even get intercepted by
+     them.  But any changes to those planes were wiped out when they
+     landed.  Abusable.
+   - The bomb command could bomb its own escorts, directly (pin-bomb
+     planes) or through collateral damage, strategic sector damage,
+     collapsing bridges or nuke damage.  The damage to the escorts was
+     wiped out when they landed.
+   - If you asked for a plane to fly both in the primary mission and
+     escort, you got charged fuel for two sorties instead of one.
+ * Plug memory leaks in plane interception.
+ * Fix trade not to let the buyer teleport satellites (not in orbit)
+   and asats to an arbitrary sector.  Abusable, because abms
+   intercepted from anywhere, and satellites could be launched from
+   unowned sectors.
+ * The PRNG seed is now logged in the journal.
+ * Fix nightly build for Windows.
+ * Fix crash bug that bit when custom tables contained columns names
+   that existed, but weren't supposed to be in the custom table.
+ * New timestamp selector for commodity, country, game, loan, nation,
+   news, realm, trade, treaty to support incremental xdump.
+ * Deity commands newcap and add wipe the nation more thoroughly.  add
+   no longer touches relations and flags for status active and god.
+ * New utility program empdump to export and import game state as
+   plain text.  Check its manual for details, including limitations.
+ * Plane, ship and land unit stats are no longer stored as game state,
+   but recomputed from tech and base stats as needed.
+ * xdump ver is no longer a special case.  Syntax "xdump ver" is now
+   deprecated.  Use "xdump version *".
+ * Fire and torpedo cleanup and bug hunt:
+   - Plug memory leak in fire command.
+   - Fix ammunition use when returning fire: resupply could lose
+     shells when returning fire to multiple targets, and land units
+     were charged per target instead of just once.
+   - torpedo and fire no longer resupply shells automatically.  The
+     latter used to resupply land units only.
+   - Land units no longer have to be in supply to fire actively, for
+     consistency with other ways to fire.
+   - Submarines with zero mobility can no longer interdict, for
+     consistency with other ways to torpedo.
+   - Fix bugs that let submarines without capability torp use
+     torpedoes to return fire and interdict.
+   - Fix torpedo command not to require a line of sight for return
+     fire and depth charges, and to use torpedo range instead of
+     firing range for return torpedoes.
+   - Active fire and interdiction didn't work for ships with zero
+     firing range, even though return fire and support did.  No such
+     ships exist in the stock game.
+   - Let land units with zero firing range and non-zero firing damage
+     fire, for consistency with ships.  No such units exist in the
+     stock game.
+   - Ships required different numbers of military to operate their
+     guns for the various kinds of fire.  Unify to require 2*N-1
+     military to fire N guns.
+   - Ship ammunition use differed for the various kinds of fire.
+     Unify to use one shell per two guns.
+   - Forts could fire support even when there were not enough mil.
+   - Fix automatic shell resupply in several places to supply exactly
+     the shells actually fired, no more, no less.
+ * Change depth charges back to how they are documented and worked
+   before 4.0.6, mostly: require no guns, one military, do damage like
+   shell fire from three guns (before 4.0.6: two guns), use two
+   shells.  In 4.0.6's model, they worked exactly like shell fire
+   (require guns and gun crew, non-zero firing range, damage and
+   ammunition use scales with available guns), except for missions,
+   which was a bug.  Note that depth charge damage for all ships is
+   now like fire from three guns for two shells.  No change for dd; af
+   did two gun damage for one shell before, and nas did four gun
+   damage for two shells.
+ * The edit command keys deprecated in 4.3.3 are now gone.
+ * Fix build not to screw up automatic dependencies on certain compile
+   errors.
+ * Fix a bug that could prevent repeated news from properly
+   aggregating into one news item.
+ * Properly initialize all bits in game state files, even those that
+   aren't used.
+ * Fix explore's test for stopping on a splashed bridge.  The bug made
+   explore print to a bogus message.
+ * Fix spelling of symbol airburst in table plane-flags.  This could
+   affect clients.
+ * Change designate not to check total cost before executing the
+   redesignation.  The code implementing that was buggy and too ugly
+   to live.  Designate doesn't cost anything in the stock game.
+ * Always charge land units at least as much mobility for assaulting
+   from non-landing ships as from landing ships.  Before, marines lost
+   all mobility when assaulting from a non-landing ship, which could
+   be less than what the same assault costs from a landing ship (half
+   an update's worth).
+ * Fix LWP's stack initialization for -s.  It caused crashes on some
+   systems.
+ * Fix confused and buggy bridge splashing code:
+   - Flying planes could be reported drowned.
+   - Pin-bombing a bridge head failed to collapse bridge spans for
+     lack of support, unless the pin-bombing caused collateral damage.
+   - Corrupt sector file could lead to infinite recursion.
+ * Relative names now work for econfig keys data and info.
+ * Fix utility programs to abort on internal errors.  They used to
+   print a message and attempt to recover.
+ * Fix off-by-one in fairland that ate the last expansion island.
+ * Switch from CVS to git.
+ * Code refactoring and cleanup.
+ * Portability fixes.
+ * Info file, manual page and documentation fixes and updates.
+
+Changes to Empire 4.3.11 - Tue Jan  1 18:57:38 UTC 2008
+ * New sector selector elev.  It's set by fairland, but has no effect
+   on the game.  It can be useful for deities to customize a world
+   created by fairland.
+ * The client now copes with ids greater than 15.  The Empire
+   protocol currently uses 14 ids.
+ * Rewrite the client's code to read server output during login.  The
+   old code could write one byte beyond the end of the buffer
+   (theoretically a remote hole), got confused by long lines, and
+   lines that didn't arrive in one piece.
+ * Long country name, password or user name crashed the client.
+ * Fix xdump not to deny access to game state tables when maximum
+   minutes per day are exceeded.
+ * The server considers a country bankrupt when its treasury is
+   negative.  Except when it doesn't.  Fix that:
+   - report misreported countries with $0 as broke.
+   - If a command spent a few cents more than you had, commands requiring
+     money became unavailable even when rounding brought you back to
+     $0.  But logging out and back in then bankrupted you.
+   - If your treasury rose to exactly $0, commands requiring money
+     remained unavailable.
+   - If you had $0, sectors didn't build and sectors and ships didn't
+     produce at the update.
+ * Fix a bug in trade that made your money evaporate when a trade fell
+   through because you couldn't fully pay.  This bug was there since
+   the introduction of the market in 4.0.0.  It got aggravated by the
+   removal of forced loans in 4.3.0.
+ * Fix printing of the new group in army, fleet and wing.  Broken in
+   4.3.5.
+ * Fix flash not to screw up the message when the first argument
+   contains white-space.
+ * Don't let planes intercept when they are stuck in foreign bases, on
+   inefficient ships or land units, or on land units loaded on ships
+   or land units.
+ * Fix a bug that made interception require petrol to be present even
+   for planes that don't use fuel (SAMs).  Broken in 4.3.3.  Air
+   defense missions weren't affected.
+ * fairland and setsector now limit fertility to 100 instead of 120,
+   like the other resources.
+ * Generalize the autonav hack for fishing boats so it covers oil
+   derricks as well.
+ * Fix bug in path command that made it swallow every other step.
+   Broken in 4.2.22.
+ * The execute command no longer supports redirections and execute in
+   batch files.  Flaws in the Empire protocol make it next to
+   impossible for clients to implement that correctly.  See
+   doc/clients-howto for an explanation.
+ * Rewrite much of the client's code for sending commands and
+   receiving server output:
+   - No longer blocks on sending commands. which could deadlock the
+     session.
+   - Fix race condition that could cause server output to be discarded
+     on EOF on standard input.
+   - Don't discard server output when reading standard input fails.
+   - Fix error handling for execute and other, more obscure cases.
+   - More rigorous error checking for redirections and execute.
+     Clearer error messages, too.
+   - Fix execute redirected to file or pipe.  Believed to be broken in
+     4.2.0.
+   - The client now creates files for redirections with the same
+     permissions whether the redirection is in a pipe or not.  Before,
+     redirections without a pipe created files with no permissions for
+     group and others.  This change may make your redirected output
+     visible to other users on your system.  Use the usual controls,
+     like umask, to restrict permissions to your liking.
+   - Reject unexpected redirections (violating the protocol).  Before,
+     they silently replaced the current one, and in the case of pipes
+     leaked file descriptors and memory.
+   - Redirections in batch files are not implemented.  They didn't
+     quite work before, and could leak memory and file descriptors.  A
+     flaw in the Empire protocol makes them next to impossible to
+     implement correctly.
+   - The execute command in batch files is not implemented.  A flaw in
+     the Empire protocol makes this practically useless anyway.
+   - Old code leaked memory in various places.
+   - Unfortunate incompatibility with older servers: if you type the
+     EOF character (normally ^D) at an argument prompt, the session
+     hangs.  Use the interrupt character (normally ^C) to get out.
+ * The client now supports options -h and -v.
+ * The client no longer zaps its command line in a lame attempt at
+   protecting users who foolishly specify passwords on the command
+   line.  Zapping annoys system administrators and creates a false
+   sense of security.
+ * Journal entries are now flushed to disk right away when the server
+   is running in debug mode.
+ * Fix bugs in load that could make loading operations fail noisily
+   instead of silently on some systems.
+ * Server now reliably shuts down session when it receives an
+   end-of-file condition from the client.  Before, it merely failed
+   the current command when it got it at an argument prompt.
+ * Fix bug in execute that could crash the server on some systems when
+   it prompts for the argument.
+ * Fix bug that let you check whether a non-allied carrier is
+   efficient enough for takeoff when one of your planes got stuck
+   there somehow.
+ * Fix bug that let you attempt to escort a one-way mission to a
+   carrier with non-light, non-interceptor escorts.  Such planes don't
+   fit on carriers, and the command then failed with a bogus error
+   message.  Before 4.2.17, the planes flew, and the escorts were
+   teleported home.
+ * Change the rules for fitting planes on ships slightly, so that the
+   order of loading no longer matters. Choppers and x-lights can now
+   use plane slots even when not light.  X-light choppers, which don't
+   exist in the stock game, can no longer use x-light slots.
+ * The server now keeps its log file open, just like the journal.
+ * New server option -R to set the PRNG seed.  This is for
+   reproducible tests.  Change the Windows-only service uninstall
+   options from -r/-R to -u/-U.
+ * Supply a real PRNG for Windows instead of the leaky water-pistol
+   Windows provides.
+ * Threads sleeping until a specified time could return early under
+   Windows.  This could cause missed updates.  Broken in 4.3.10.
+ * Fix missing newline in show updates.
+ * Power report didn't factor tech into power correctly.  Broken in
+   4.3.3.
+ * Code refactoring and cleanup.
+ * Info file and documentation fixes and updates.
+
+Changes to Empire 4.3.10 - Thu Sep  6 17:59:53 UTC 2007
+ * Bridge spans now cost $1000 instead of $2000, and bridge towers
+   $3000 instead of $7500.
+ * The Windows port now supports IPv6, but it still needs to be
+   enabled manually at compile-time.
+ * The custom table reader detects more errors.
+ * Do not leak world creation time in files and fairland, because
+   that facilitates attacks against the PRNG.  This misfeature crept
+   into 4.3.0.
+ * Remove the ancient, crufty non-UCONTEXT system-dependent LWP code.
+   Using it required manual hackery since 4.3.0.
+ * Plug file descriptor leak in add command.
+ * Don't kill player connections violently when their thread appears
+   to be hung.  Threads being aborted by update or shutdown could be
+   misidentified as hung, and the violence could lead to resource
+   leaks, locked out updates, and corrupted game state.
+ * Fix LWP to reliably wake up threads sleeping for a time.  Before,
+   players with a sufficiently fast connection could starve out system
+   threads, including the update.
+ * Fix a class of bugs that made commands behave differently while the
+   update is attempting to take control:
+   - No MOB_ACCESS mobility was gained.
+   - Telegrams were miscounted.
+   - Bulletins got misfiled as production reports.
+   - The navigate command ignored sail paths.
+   - The declare command was more quiet, and declarations of war
+     failed silently when SLOW_WAR was enabled.
+   - Many messages got misdirected to bulletins.
+   Some of these bugs go back all the way to Empire 2, ca 1995.
+ * New deity command reload, effect similar to SIGHUP.
+ * Not voting for a demand update no longer lets you veto further
+   demand updates.  This feature was flawed (it encourages players to
+   vote late so that they can tactically vote no and thus build up
+   veto rights), virtually unused, and buggy.  The edit command still
+   accepts and ignores the country key 'U' for compatibility, but it
+   is deprecated.
+ * Fix zdone not to claim to have triggered an update when they're
+   disabled.
+ * New update scheduler and ETU clock:
+   - New schedule file.  See doc/schedule for how to use it.  Replaces
+     econfig keys update_policy, adj_update, update_times, hourslop,
+     blitz_time.  A change of schedule does not require a server
+     restart.
+   - The force command can no longer force updates in the future.
+     Edit the schedule file for that.
+   - New command show updates to show the update schedule.  Obsoletes
+     the update command.
+   - New xdump game and xdump updates.
+   - New utility program empsched to help test update schedules.
+   - Replace option DEMANDUPDATE and econfig key update_demandpolicy
+     by econfig key update_demand.
+   - econfig key update_demandtimes no longer applies to scheduled
+     demand updates.
+   - You now receive new BTUs at the update in addition to login.
+   - You now always gain the same BTUs and MOB_ACCESS mobility per
+     turn, even when the update schedule changes, updates get missed,
+     or unscheduled demand updates run.
+   - Remove the mobupdate command, because porting it to the new ETU
+     clock is not worth it.
+ * Redesign of synchronization between commands, update and shutdown,
+   and how updates are triggered:
+   - Simplify update to a single thread waiting for the trigger.
+     Before, three update threads had to perform a carefully
+     choreographed dance to make updates happen.  The dance relied on
+     thread priorities for correctness, which are only implemented by
+     LWP.  With pthreads and under Windows, demand updates were prone
+     to two update threads starting up concurrently.  Even with LWP,
+     forced and demand updates could lead to double updates.
+   - Use a lock for synchronization: commands take it shared, update
+     and shutdown take it exclusive.  This makes update and shutdown
+     block until all aborted commands terminated and gave up their
+     lock.  Before, they proceeded blindly after waiting two or one
+     seconds respectively, which was cheesy and unsafe.
+   - New commands no longer fail while the update is pending, they are
+     delayed until after the update.
+   - New commands can no longer start during shutdown.  Before, they
+     could, but risked getting killed violently, possibly corrupting
+     game state.
+   - Fix command execution so that commands blocked in writing
+     redirections are abortable.  The bug allowed players to delay
+     update and shutdown indefinitely.
+   - Fix shutdown not to let player threads block on output.  This
+     let players delay shutdown indefinitely.
+   - Fix reading of player input not to block again after update or
+     shutdown aborted it.  The bug allowed players to delay update and
+     shutdown indefinitely.
+ * Thread priorities are only implemented by LWP and no longer used.
+   With LWP, they let players with a sufficiently fast connection 
+   starve out the threads that clean the lost file and kill idle
+   connections.  Drop them.
+ * Show nuke rounded required research incorrectly.
+ * Log unprintable characters as octal escapes rather than question
+   marks in the journal file.
+ * The files program no longer changes permissions of existing files.
+ * The files program now creates all files with permissions ug=rw and
+   all directories ug=rwx, modified by umask.
+ * Fix a bug that could make arm, disarm and nuke detonation work with
+   a used-up nuke instead of the armed one.  This could be abused to
+   detonate nukes multiple times.  Broken in 4.3.3.
+ * Fix nuke detonation output for zero blast radius.
+ * Plug memory leaks in thread code.
+ * Fix a bug that made LWP I/O wakeup unreliable.
+ * New march sub-command v for view.
+ * Journal was initialized before threads were, which was wrong.
+ * Fix server not to create a journal on SIGHUP when it is disabled.
+ * shutdown 0 now requests immediate shutdown instead of cancellation
+   of a pending shutdown.  shutdown -1 now cancels.
+ * flash and wall no longer split long message lines.
+ * Fix a bug in collect that screwed up a fully collected loan instead
+   of deleting it.  The screwed up loan could not be sharked or
+   collected, but it could be repaid.
+ * Remove the wait command, it's been broken and restricted to deity
+   since Empire 2, ca. 1995.
+ * Budget failed to take sector production into account for predicting
+   unit repairs.  Before 4.3.6, this bug bit only when you fooled
+   around with budget priorities.
+ * When unit repairs are limited by materials, the efficiency gain is
+   now rounded down.
+ * Ship repairs outside harbors and plane repairs by carriers used to
+   consume commodities when and as far as available.  Now, they
+   consume the same fraction of the real cost of each commodity,
+   i.e. commodity use is limited by the most scarce commodity.
+   Neither old nor new behavior make much sense, but the new code is
+   simpler.
+ * Code refactoring and cleanup, in particular to make the Windows
+   port less ugly.
+ * Portability fixes.
+ * Info file and manual page updates.  All manual pages are now
+   installed in section 6.
+
 Changes to Empire 4.3.9 - Sat Jan  6 12:42:19 UTC 2007
  * Fix declare to prevent the deity from changing relations for a
    player to self.  Allow the deity to set the relations of a player
@@ -5,8 +389,8 @@ Changes to Empire 4.3.9 - Sat Jan  6 12:42:19 UTC 2007
  * Fix arm not to put the same nuke on multiple planes (broken in
    4.3.3).
  * New option AUTO_POWER.
- * Repair allied land units.
- * Only repair owned and allied planes.
+ * Sectors now repair allied land units.
+ * Sectors now repair only own and allied planes.
  * Fix repair of planes on foreign carriers: repair allied planes,
    ignore the others.  Before 4.3.3, carriers destroyed rather than
    repaired foreign planes.  Since 4.3.3, foreign planes were treated