Version v1.1.6.3 for Kerbal Space Program 1.6.1

v1.1.6.3 Folder Path Protection

Built for KSP 1.6.1

This is a patch for protecting against some kinds of file folder access that concerned us for those people using kOS to set up "Twitch Plays kOS" streams.

Although we try to block a kerboscript's ability to access files outside the Ships/Script/ folder, we cannot (and will not) guarantee to have thought of every trick a clever person might come up with to fool the system into allowing access. As always, be wary that if you allow any random arbitrary person to run scripts (in any system, in any language, really) on your own computer that you have not read through and vetted yourself, that you are doing this at your own risk.

BUG FIX:

If you currently have a "Twitch Plays kOS" stream, or plan to set up one in the future, PLEASE see this writeup:

Version v1.1.6.2 for Kerbal Space Program 1.6.1

Released on 2019-02-09

kOS Mod Changelog

v1.1.6.2 Quickfix (Image Files to DDS)

Built for KSP 1.6.1

Nothing but a quick patch to v1.1.6.0.

BUG FIX

The v1.1.6.0 update resized a few of the PNG images used
in the GUI panels, which exposed a bug that only manifests
on some graphics cards. KSP converts PNGs to DDS format
upon loading them, and appears to use the Direct3D graphics
driver to do so. Older graphics cards refuse to do that
conversion on images that aren't exactly expected sizes.
We were just "lucky" that this never happened in the past
with the image sizes we were using. Converting them to
DDS ourselves and shipping them that way, we bypass this
problem because the user's own graphics drivers aren't
responsible for doing the conversion.

Version v1.1.6.1 for Kerbal Space Program 1.6.1

Released on 2019-02-04

Nothing but a quick patch to v1.1.6.0.

BUG FIX

v1.1.6.0 had a flaw in MAXTHRUST, AVAILABLETHRUST, and engine ISP calculations that always calculated them as if your ship was in vacuum even when it's not. This was deemed an important enough problem to warrant a quick-fix release.

Version v1.1.6.0 for Kerbal Space Program 1.6.1

Released on 2019-02-04

v1.1.6.0 It's been too long without a release.

Built for KSP 1.6.1

It's been a long time without a release. We kept putting it off until
"that one more thing" was merged in, and there was always "that one more
thing", again and again, that kept putting off the release more and more.
Eventually we decided to release what we had since there's so many fixes
the public weren't getting.

This release incorporates 50 separate Pull Requests from many individuals.
As always, thanks to everyone who contributed over the last year. (Has it
really been that long? Almost.)

BREAKING CHANGES:

(None that we know of, but this is a big update so we could have missed
something.)

BUG FIXES:

Was reading POSITIONAT() from the wrong orbit patch when getting a
prediction for the moment when a patch transition should occur.
pull request

Stage:resources gave wrong values in cases of stages without a decoupler.
pull request

Several documentation clarifications. See individual links below for
more details:

Massive refactor of how trigger interrupts work, that allows them
to behave more consistently and allows more complex layering
of triggers. (In this CHANGELOG, This is listed both under "new
features" and "bug fixes" since it's both.)
pull request

Fix: Locked steering refusing to let go if the IPU boundary
lands right in the middle of kOS's steering trigger (kOS
not having "atomic sections", the ordering of the opcodes
mattered a lot).
pull request

Fix: Undocking/Decoupling while a kOS unit on the lower half
has locked steering used to cause the lower stage's kOS unit to spin
the upper stage's steering and never let go of it.
pull request

Fix: Hyperbolic orbits now allow negative anomaly angles to
represent measures "prior to periapsis" correctly. (Previously
it represented a value like -10 degrees as +350 degrees, which
doesn't make sense if the orbit isn't closed and won't come back
around.)
pull request

Fix: E,S, and R keys now working right in text editor widget in
Linux port. kOS incorrectly prevented the E, S, and R keys from
passing through to other widgets before. This error was only
noticed on Linux because Unity3d's event queue passes through
widgets in a different order on different OS ports.
pull request

kOS will now let go of the steering when the program dies
due to a lack of electricity. This allows your vessel to get some
power recharging again when it starts getting sun on the solar panels
again. (Previously the steering deflection was still present, meaning
the ship needed a recharge rate higher than the power the torque wheel
expended in order to actually get a net positive recharge.)
pull request

Fix: UTF-8 text files that contain a BOM (Byte Order Mark) are now
parse-able. (Notepad.exe was really the only text editor that
triggered this problem. No other editors put a BOM in UTF-8 files.)
pull request

Fix: If you lock steering from the interpreter, then also run
a program that locks steering, that program used to bomb with error
when it tried to exit and return to the interpreter.
pull request

Fix: Using the meta-key AltGr on some European keyboards was causing
garbage to appear in the terminal interactive prompt, but only on the
Linux port of Unity3d. Again, Unity3d does weird things in its Linux
port for no apparent reason (they're not because of the OS itself),
that we have to accommodate.
pull request

Fix: Bulkhead profile added to part files. It is required for the
new KSP 1.6.x filtering "by diameter" feature. Without it, the VAB
could hang forever when a user clicks that tab.
pull request

Fix: Map View no longer rotates with the vessel when focus is on
the terminal window. It's a stock bug that required a bit of
trial and error to pin down, then an ugly kludge to keep it from
being triggered.
pull request

Fix: OrbitInfo:TOSTRING now prints the body name properly.
pull request

NEW FEATURES:

Made several of the string parameters to GUI widgets optional.
pull request

Massive refactor of how trigger interrupts work, that allows them
to behave more consistently and allows more complex layering
of triggers. (In this CHANGELOG, This is listed both under "new
features" and "bug fixes" since it's both.)
pull request

Make terminal's "dim" unfocused mode stop being transparent, for extra
readability. (It was never transparent enough to usefully see through,
but it was transparent enough to make it hard to see the letters.)
pull request

Fix: All the image files and texture files are using .DDS format now,
and both X and Y resolutions for them have been resized to exact powers
of 2, which DDS requires. (Unity loads DDS files faster, and they
form a smaller download ZIP).
pull request

Version v1.1.5.2 for Kerbal Space Program 1.5.1

Released on 2018-03-14

This release is mostly just a recompile to make kOS work with
KSP 1.4.1, with the few changes that were needed to keep it
working, and whatever bug fixes happened to already be
implemented when when KSP 1.4.1 came out.

Version v1.1.5.1 for Kerbal Space Program 1.2.2

Released on 2018-01-25

BACKPORT FOR KSP 1.2.2 (for Realism Overhaul)

This is NOT a release for the most recent KSP. It is a back-port for KSP 1.2.2 so people using Realism Overhaul can use it.

Note, Please take this into account if you are using RP-0 with Realism Overhaul: RP-0 by default does not "cost" the kOS parts properly, so if you have all non-costed parts banned, kOS parts are banned too. This leaves you with only the default disk capacity of 5000 in all avionics parts in RO, which is incorrect. To fix this problem and get reasonable disk capacity, change this line in:

Version v1.1.5.0 for Kerbal Space Program 1.3.1

Released on 2018-01-01

v1.1.5.0 HotFix for nested function scope.

Built for KSP v1.3.1

This release is just to fix one bug introduced by v1.1.4.0
that was discovered post-release by the users, during the
Christmas-NewYears time. The fix was quick but release
was delayed for after the holidays.

BREAKING CHANGES:

None that we know of. This change shouldn't even require
recompiling KSM files, presuming you had them recompiled
already for v1.1.4.0.

BUG FIXES:

The default scope for declare function when you say neither
local nor global, was always defaulting to global
in the previous release (kOS 1.1.4.0), when it was supposed to be
context dependent. It was meant to be global only when the
function is at outermost file scope, but local when the
function is nested at any inner scope deeper than that. This is
now fixed, and this bug is the main reason for this hotfix release.
pull request

The above bug also exposed a vulnerability in how kOS's own errors
(ones that are the dev's fault, not the user's fault) are dealt
with. If ReplaceLabels() (a final step of loading a script into memory,
that happens when you RUN a .ks or .ksm file) threw an exception,
then the user would see the same error message repeating forever,
and never get control of that kOS computer back again. (This
vulnerability was introduced when compiling was moved to its own
thread, for complex reasons, but only just discovered now because
this was the first time ReplaceLabels() had an exception since that
move had happened.) It is fixed now.
pull request

v1.1.4.0 Does faster compilation break a work flow?

Version v1.1.4.0 for Kerbal Space Program 1.3.1

Released on 2017-12-27

v1.1.4.0 Does faster compilation break a work flow?

Built for KSP v1.3.1

This release was primarily focused on speedups and smoothness
of execution. We welcomed a new developer (github username @tsholmes)
who contributed a lot of bottleneck analysis and code speedups. The
goal was to reduce the burden kOS causes to the physics rate of the
game, and consequently also allow tech tree scaled performance by era
for the kOS computer parts themselves (slow at first, faster later).

BREAKING CHANGES:

If you use the compiled script feature YOU MUST RECOMPILE ALL KSM FILES,
USING KSM FILES COMPILED IN A PREVIOUS VERSION WILL RESULT IN AN ERROR.

Files now have an implied local scope, causing the following change:

Previously: If you declared a variable as local at the
outermost scope of a program file (outside any curly braces),
then it had the same effect as global, creating a variable
that you could see from anywhere outside that program file.

New behavior: Now that there is an outermost scope for a file,
local actually means something in that scope. To get the
old behavior you would need to explicitly call the variable
global.
(The variables magically created via the lazyglobal system will still
be global just like they were before.)

Parameters to programs now have local scope to that program file.
(Previously they were sort of global and visible everywhere, which
they shouldn't have been. If you relied on this behavior your
script might break.) This is of particular note when working with locks and
triggers as the local parameters may conflict with the global scope of these
features.

Functions declared at the outermost scope of a program will now
keep proper closure, making them see variables local to that program
file even when called from outside that file. This may hide a global
variable with a more local variable of the same name, when previously
the global variable would have been accessible from the function.
(You probably weren't relying on this buggy behavior before, but
if you were, this fix will break your script.)

NEW FEATURES:

File scope: Previously, kerboscript did not wrap program files
in their own local scope. (Declaring a local in a file had
the same effect as declaring a global there). Now each program file
has its own scope (and also the parameters passed to a program file
are local to that file scope).

NOTE: For backward compatibility, there is one important exception
to the file scope - functions declared at the outermost level by
default can be globally seen in other programs. You CAN get functions
that are local to the file's scope, but you have to explicitly include
the local keyword in the function declaration to make that happen.
pull request

OPTIMIZATIONS:

The regular expression syntax used to compile programs has been heavily
modified to speed up file parsing using start string anchors and eliminating
string copying.
pull requestpull request

Suffix lists are no longer initialized on every call, saving both execution
time and memory.
pull request

BUG FIXES:

Functions at the outermost file scope level now have closures that can
see the file scope variables properly. Previously they could not (but
this did not matter since there was no file scope to matter. This bug
got exposed by the other file scope changes.)
pull request

Fixed inability to use flight controls on a craft with local control when
RemoteTech is installed, both with and without a probe core installed.
pull request

Fixed a crash to desktop when attempting to parse very large numbers.
pull requst

Fixed syntax errors in the exenode tutorial documents. The code as displayed
has been tested to work correctly as of this release.
pull request

Parsing numbers on host computers that normally expect the , character to
be used as a decimal symbol will no longer be blocked. kOS now forces the use
of CultureInvariant when parsing numbers, so all locales will be required
to use the . character for decimals.
pull request

Action Groups Extended support should once again work as the the method used
to detect that the mod is installed has been repaired.
pull request

Attempting to delete a path that does not exist no longer throws a null
reference error.
pull request

Version v1.1.3.1 for Kerbal Space Program 1.2.2

ONLY USE THIS RELEASE FOR PEOPLE STUCK ON KSP 1.2.2. If you are on KSP 1.3, then use v1.1.3.0 instead. This is a port of v1.1.3.0 backward to KSP 1.2.2.

Version v1.1.3.0 for Kerbal Space Program 1.3.0

Released on 2017-09-19

v1.1.3.0 (for KSP 1.3) Bug Swatting Release

For this release we instituted a rule partway through that only bug fixes
should be allowed (some of the first few changes were enhancements rather
than bug fixes, but after that, its all bug fixes). This was in a vain
hope that doing so would get a release out faster than normal.

BREAKING CHANGES

(Can't think of any.)

NEW FEATURES

Terminal input using any Unicode character, not just ASCII.
(Technically not a new feature, but a bug fix to a feature
from the previous version, but since the bug made the feature
never work at all in the past, it feels like a new feature).
pull request

BUG FIXES

A large refactor of how the various flight control methods track
which vessel they control. This appears to have fixed a lot of
bugs where kOS lost the ability to control the ship unless
you reloaded the scene. (After a docking, undocking, staging,
vessel switch, or scene switch, this would sometimes happen,
but not consistently enough to be easy to debug).
pull requestpull request

Program aborts caused by external events such as poweroff,
shutdown, or control-C no longer leave garbage behind in
memory still hooked into parts of kOS.
pull request

Documentation now more explicitly mentions how SAS and lock steering
fight with each other.
pull request

The waypoint() constructor used to fail on waypoints which
were not part of a cluster yet were named as if they
were part of a cluster anyway ("my waypoint Alpha",
"my waypoint Beta", "my waypoint Gamma", etc). This doesn't
happen in stock, but does happen with several mods that use
ContractConfigurator. kOS will now deal with such waypoints.
pull request

Documentation that claimed obsoleted TERMVELOCITY still
exists has been removed or edited.
pull request

Version v1.1.1 for Kerbal Space Program 1.3.0

Version v1.1.0 for Kerbal Space Program 1.2.2

Released on 2017-06-13

BREAKING CHANGES

Because of changes to make the terminal use a real font from your OS, we had
to obsolete TERMINAL:CHARWIDTH. You can only choose TERMINAL:CHARHEIGHT.
Each font has its own hardcoded notion of how wide a letter will be at a
given height, which you can't override.

CONFIG:BRIGHTNESS was moved back to the global config section, and is no longer
set on the "difficulty" options screen, because it's not supposed to be a
per-saved-game setting, but a user-interface preference that spans all saved games.

ATM:SEALEVELPRESSURE now gives the answer in different units than it used to.
(It was in KiloPascals even though the documentation claimed it was in atmospheres.
Now it's in atmospheres to agree with the documentation.)

NEW FEATURES

GUI-making toolkit. You are now able to make a GUI window that your kerboscript
code can control, including buttons, sliders, toggles, checkboxes, etc. It uses the
KSP game's default skin (kind of big letters) but the skin can be customized by the
script a bit to change things.
pull requestpull request
documentation: search for "GUI" (http://ksp-kos.github.io/KOS_DOC/structures/gui.html).

Background compilation. Now the game continues its simulation normally and physical
events keep happening, while kOS is taking a few seconds to compile a script.
(Gets rid of that familiar frozen game effect when you first issue a RUN command.)
pull request

Allow any unicode. The kerboscript parser now allows identifiers and literal strings to
contain letters outside the limited ASCII-only range it used to accept. The in-game terminal now
allows you to type any letter your keyboard can type. (But it does not implement the ALT-numpad
technique of entering characters. You have to have a keyboard that types the character directly.
However, the ALT-numpad technique will work through the telnet terminal, if your telnet client's
window can do it.)
pull request

Choose the IP address of the telnet server, from the ones your computer has available, instead
of kOS picking one arbitrarily.
pull request

Allow local variables in triggers In order to support the kOS callback
system used by the GUI, we also finally had to add support for proper local
variable scoping to triggers like WHEN and ON. A trigger's condition

Pressure at a given altitude is now something you can query from an atmosphere.
pull request, documentation: search for "ALTITUDEPRESSURE" (http://ksp-kos.github.io/K
OS_DOC/structures/celestial_bodies/atmosphere.html#method:ATMOSPHERE:ALTITUDEPRESSURE).

Get a LATLNG for some other body than the current one.pull request, documentation: search for "GEOPOSITIONLATLNG" (http://ksp-kos.github.io/
KOS_DOC/structures/celestial_bodies/body.html#method:BODY:GEOPOSITIONLATLNG).

Version v1.0.3 for Kerbal Space Program 1.2.2

Released on 2016-12-08

v1.0.3 (for KSP 1.2.2) Make a little noise! (Part Deux)

Summary

This release is nearly identical to v1.0.2, except that it was compiled against
binaries from KSP v1.2.2 (released just before we published) and the version numbers
have been advanced. While it appears that kOS v1.0.2 is compatible with KSP v1.2.2,
we wanted to err on the side of caution and provide an explicitly compatible release.
Please review the changelog for v1.0.2 if you are upgrading from an earlier version.

Version v1.0.2 for Kerbal Space Program 1.2.1

v1.0.2 Make A Little Noise!

BREAKING CHANGES

As always, if you use the compiler feature to make KSM files, you should
recompile the KSM files when using a new release of kOS or results will
be unpredictable.

Most in game settings are now integrated with KSP's difficulty settings window.
You will be prompted to migrate existing settings when you load your save game.
Telnet settings are still stored in the old config file, but everything else is
now stored within the save file.
pull request | documentation

Calls to resource suffixes on the stage bound variable are no longer rounded to 2 decimal places.
Previously they were rounded to assist in detecting "zero" fuel, but they cause inequality issues
when comparing to the newer stage:resources list or stage:resourceslex values.

The behavior of the resource suffixes on the stage bound variable has changed with regard
to asparagus staging. If you have smaller tanks that can be staged, stage:liquidfuel
will return 0 even if you still have an engine firing. This is a break from previous versions
of kOS, but is aligned with the current UI design. Previous versions also aligned with the KSP
UI, but the UI mechanic was updated with KSP 1.2.x

NEW FEATURES

Official release for KSP version 1.2.1!

kOS now has a procedural sound system! You can use it to play customized error
tones or make your own musical notes.
pull request | documentation

Version v1.0.1 for Kerbal Space Program 1.1.3

Released on 2016-10-11

v1.0.1 (for KSP 1.1.3) Let's take some input!

Why 1.1.3 and not 1.2?

We wanted to get the last bug fixes and new features into the hands of any users
who might not update KSP to 1.2 right away. Traditionally there are some mods
that take a while to update when KSP releases a new version, and many users
choose to wait for all of their favorite mods to update before upgrading KSP.
By releasing in conjunction with the update, we can ensure that as many users as
possible have access to these latest updates. We will be releasing a version of
kOS that is compatible with KSP 1.2 as soon as possible after the final build is
released to the public.

BREAKING CHANGES

As always, if you use the compiler feature to make KSM files, you should
recompile the KSM files when using a new release of kOS or results will
be unpredictable.

The stage command/function now implements the yield behavior, waiting until
the next physics tick to return. This ensures that all vessel stats are
updated together. (https://github.com/KSP-KOS/KOS/pull/1807)

NEW FEATURES

Functions and opcodes can now tell the CPU to yield (wait) based on their own
arbitrary logic. This allows future functions to be "blocking" (preventing
further execution) without blocking KSP itself.
(https://github.com/KSP-KOS/KOS/issues/1805,
https://github.com/KSP-KOS/KOS/pull/1807, and
https://github.com/KSP-KOS/KOS/pull/1820)

New timewarp structure, available on the kuniverse bound variable. This
structure provides additional information and control over time warp. The old
warp bound variables remain in place.
(https://github.com/KSP-KOS/KOS/issues/1790 and
https://github.com/KSP-KOS/KOS/pull/1820)

Introducing a new terminalinput structure for keyboard interaction from
within scripts! Currently support is only provided for getting single
characters.
(https://github.com/KSP-KOS/KOS/pull/1830)

Please check http://ksp-kos.github.io/KOS_DOC/changes.html for more detailed
explanations for the new features.

BUG FIXES

Fix for formatting of time:clock to pad zeros
(https://github.com/KSP-KOS/KOS/issues/1771 and
https://github.com/KSP-KOS/KOS/pull/1772)

Fix for not being able to construct a vessel("foo") if "foo" is the name of
the current vessel (https://github.com/KSP-KOS/KOS/issues/1565 and
https://github.com/KSP-KOS/KOS/pull/1802)

RemoteTech steering should be fixed. At worst you may see a 1sec gap with
the controls, as we now refresh the steering callback about once per second.
(https://github.com/KSP-KOS/KOS/issues/1806 and
https://github.com/KSP-KOS/KOS/pull/1809)

Named functions defined within anonymous functions will no longer throw an
error (https://github.com/KSP-KOS/KOS/issues/1801 and
https://github.com/KSP-KOS/KOS/pull/1811)

lock steering no longer throws an exception inside of an anonymous functions
(https://github.com/KSP-KOS/KOS/issues/1784 and
https://github.com/KSP-KOS/KOS/pull/1811)

Compiled programs that include a large number of named functions should no
longer throw an error (https://github.com/KSP-KOS/KOS/issues/1796 and
https://github.com/KSP-KOS/KOS/pull/1812)

Fixed the first call to wait after the cpu boots
(https://github.com/KSP-KOS/KOS/issues/1785)

Version 1.0.0 for Kerbal Space Program 1.1.3

Released on 2016-08-15

Hey let's stop calling it Beta

@Dunbaratu Dunbaratu released this 3 hours ago
About the name:

kOS has been around long enough that we figured it was long overdue
for us to stop calling it 0.something. Lots of people are using it,
and we're worried about backward compatibility enough that we're not
really treating it like a Beta anymore. This version contains mostly
a few things that we knew might break backward compatibility so we'd
been putting them off for a long time. A jump to 1.0 seems a good time
to add those changes.

Of course, it has lots of other changes for whatever else was being
worked on since the last release.
BREAKING CHANGES

As always, if you use the compiler feature to make KSM files, you should recompile the KSM files when using a new release of kOS or results will be unpredictable.
New Subdirectories ability has deprecated several filename commands such as delete, copy, and rename. They will still work, but will complain with a message every time you use them, as we may be removing them eventually. The new commands deletepath, copypath, and movepath described below are meant to replace them.
When using a RemoteTech antenna that requires directional aiming, in the past you could aim it at mission control with SETFIELD("target", "mission-control") and now you have to say SETFIELD("target", "Mission Control") instead, due to changes in RT's naming schemes.
Previously the Y and Z axes of SUN:VELOCITY:ORBIT were swapped. (#1764) This has been fixed so it is now the same as for any other body, however scripts might exist that had previously been swapping them back to compensate for this, and if there were they would now break since that swapping is no longer needed.

NEW FEATURES

Subdirectories: (http://ksp-kos.github.io/KOS_DOC/commands/files.html) You are now able to store subdirectories ("folders") in your volumes, both in the archive and in local volumes. To accomodate the new feature new versions of the file manipulation commands had to be made (please go over the documentation in the link given above). In the Archive, which is really your Ships/Script/ directory on your computer, these subdirectories are stored as actual directories in your computer filesystem. (For example, the file 0:/dir1/dir2/file.ks would be stored at Kerbal Space Program/Shipts/Script/dir1/dir2.file.ks on your real computer.) In local volumes, they are stored in the persistence.sfs savegame file like usual. (Pull Request discussion record: #1567)
Boot subdirectory: (http://ksp-kos.github.io/KOS_DOC/general/volumes.html#special-handling-of-files-in-the-boot-directory) To go with Subdirectories, now you make a subdirectory in your archive called boot/, and put all the candidate boot files there. When selecting a boot file in the VAB or SPH, the selections are taken from there and need not contain the "boot_" prefix to the filename anymore. Old boot files will be grandfathered in that are named the old way, however.
CORE:BOOTFILENAME is now a full path. i.e. boot/myfile.ks.
PATH structure now allows you to get information about the new full subdirectories system from your scripts. (http://ksp-kos.github.io/KOS_DOC/structures/volumes_and_files/path.html)
New RUNPATH command now allows any arbitrary string expression to be used as the name of the file to be run. i.e. set basename to "prog". set num to 1. runpath(basename+num, arg1). // same as run prog1(arg1). As part of the support for this, programs with a large number of RUN commands (or RUNPATH commands) should now take up a bit less of a memory footprint than they used to in their compiled form (and thus in KSM files too). (http://ksp-kos.github.io/KOS_DOC/commands/files.html#runpath-and-runoncepath)
Communication between scripts on different CPUs of the same vessel or between different vessels. (http://ksp-kos.github.io/KOS_DOC/commands/communication.html)
A new structure, the Message, contains some arbitrary piece of data you choose (a number, a string, a list collection, etc), and some header information kOS will add to it that describes where it came from, when it was sent, and so on. What you choose to do with these arbitrary chunks of data is up to you. kOS only lets you send them. You design your own protocol for what the data means.
If RemoteTech is installed, a connection is needed to send a message to another vessel (but not to a CPU on the same vessel). And, the message won't actually show up in the other vessel's queue until the required lightspeed delay.
To handle KSP's inability to have different vessels far away from each other both fully loaded and active, you do have to switch scenes back and forth between distant vessels if you want them to have a conversation back and forth. Messages that were meant to arrive on a vessel while it wasn't within active loading range will wait in the recever's vessel queue until you switch to it, so you don't have to hurry and switch "in time" to get the message.
Added anonymous functions : (http://ksp-kos.github.io/KOS_DOC/language/anonymous.html) By placing arbitrary braces containing the body of a function anywhere within the script that an expression is expected, the compiler builds the function code right there and then returns a delegate of it as the value of the expression.
New 3rd-party addon framework (https://github.com/KSP-KOS/KOS/tree/develop/src/kOS/AddOns/Addon%20Readme.md) allows authors of other KSP mods to add hooks into kOS so that kOS scripts can interface with their mods more directly, without kOS developers having to maintain that code themselves in the kOS repository. (Pull Request discussion record: #1667)
allow scripted vessel launches KUNIVERSE:GETCRAFT(), KUNIVERSE:LAUNCHCRAFT(), KUNIVERSE:CRAFTLIST(), and KUNIVERSE:LAUNCHCRAFTFROM() allow you to script the changing of scenes and loading of vessels into those scenes. While this breaks the 4th wall quite a bit (how would an autopilot choose to manufacture an instance of the plane?), it's meant to help with script testing and scripts that try to repeatedly run the same mission unattended. (http://ksp-kos.github.io/KOS_DOC/structures/misc/kuniverse.html)
eta to SOI change: Added SHIP:OBT:NEXTPATCHETA to get the time to the next orbit patch transition (SOI change). (http://ksp-kos.github.io/KOS_DOC/structures/orbits/orbit.html#attribute:ORBIT:NEXTPATCHETA)
get control-from: Added SHIP:CONTROLPART to return the Part of the vessel that is currently set as its "control from here" part. (http://ksp-kos.github.io/KOS_DOC/structures/vessels/vessel.html#attribute:VESSEL:CONTROLPART)
maneuver nodes as a list:( New ALLNODES bound variable that returns a list of all the currently planned manuever nodes (the nodes you could iterate through with NEXTNODE, but rendered into one list structure). (http://ksp-kos.github.io/KOS_DOC/bindings#allnodes)
Several new pseudo-action-groups (akin to "panels on", that aren't action groups as far as stock KSP is concerned, but kOS treats them like action groups) were added. (http://ksp-kos.github.io/KOS_DOC/commands/flight/systems#kos-pseudo-action-groups)
Ability to get/set the navball mode (surface, orbital, target) with the NAVMODE bound variable: i.e. SET NAVMODE TO "SURFACE"..
UniqueSet structure. (http://ksp-kos.github.io/KOS_DOC/structures/collections/uniqueset.html) A collection intended for when all you care about is whether a equivalent object exists or doesn't exist yet in the collection, and everything else (order, etc) doesn't matter.

BUG FIXES

In some cases (#1661) the program wouldn't stop immediately when you execute a kuniverse command that reloads a save or switches scenes. It would instead finish out the remainder of the IPU instructions in the current physics tick. After the fix, causing a scene change (or reload) automatically stops the program right there since anything it does after that would be moot as the game is about to remove everything it's talking about from memory.
If using "Start on archive", with Remote Tech, a misleading "power starved" error was thrown when you reboot a probe that's out of antenna range. (#1363)
unchar("a") was apparently broken for a few months and we hadn't noticed. The root cause was that its implementation had to be edited to comply with the change that enforced the VM to only use kOS Structure types on the stack. The need for that change had been missed. (#1692)
Previously Infernal Robotics allowed you to move servos that weren't even on your own vessel and you shouldn't have direct control over. This has been fixed. (#1540)
Refactored previous non-working technique for quicksave/quickload to turn it into something that works. (#1372)
There were cases where using CTRL-C to abort a program would cause some old cruft to still be leftover in the VM's stack. This made the system fail to clear out the names of functions that were no longer loaded in memory, making it act like they were still reachable and call-able. (#1610)
Some types of Resource didn't contain the :DENSITY suffix like the documentation claimed they would. (#1623)

Version v0.20.1 for Kerbal Space Program 1.1.2

v0.20.1 KSP 1.1.2 and bug repair

The biggest reason for this release is to handle two game-breaking
problems caused by recent alterations in the API that kOS hadn't
adapted to correctly yet.

The "remit" of this release is purely to fix a few bugs, and patch up
a few things where KSP 1.1 had changes we didn't catch. Mostly,
that's cases where previously working code in kOS had now become a
bug, but it also includes a few other bug fixes not related to KSP 1.1.

But any new features (rather than bug fixes) in the pipeline not directly
related to that "remit" are not in this release.

BREAKING CHANGES

STEERINGMANAGER:SHOWRCSVECTORS and STEERINGMANAGER:SHOWENGINEVECTORS are now obsolete and will throw an error.

BUG FIXES

Infinitely growing mass: Realism Overhaul users could not use kOS anymore, because kOS was re-adding its small module mass to the part again and again each physics tick. Even though the mass of kOS is small, adding it to the part 25 times a second quickly made the vessel grow too massive to do anything with. The bug was not caught earlier because it only happened if kOS was added to parts other than the parts kOS ships with (i.e. by using ModuleManager), and those parts also had other mass-affecting modules on them. Although discovered in Realism Overhaul, the problem could have been affecting any users who used kOS in that same fashion. The cause was traced to an incorrect use of the new mass API by kOS and has been fixed. (https://github.com/KSP-KOS/KOS/pull/1644).

"SET TARGET TO FOO." while the terminal is open was failing. Now it works. (The kOS terminal locks out all other inputs so your keypresses don't affect the ship, but as of KSP 1.1 the "all" input lock it was using to do so also includes the ability to set target, which it didn't before.) (https://github.com/KSP-KOS/KOS/pull/1636)

Incorrect value for MeanAnomalyAtEpoch fixed. It was multiplying the value by the conversion factor for radians-to-degrees twice, rather than just once. (https://github.com/KSP-KOS/KOS/pull/1642)

GeoCoordinates were not serializing properly. Now they are. (https://github.com/KSP-KOS/KOS/pull/1615).

Finally fully obsoleted the years-old suffixes for trying to do antenna range the old way (before we just relied on Remote Tech to do antenna work for us). (https://github.com/KSP-KOS/KOS/pull/1607).

Bug fixes for catching a few more cases where staging or decoupling part of the craft away was still confusing SteeringManager into trying to lock out, or take control of, the wrong half of the craft. (https://github.com/KSP-KOS/KOS/pull/1544).

NEW FEATURES

KSP 1.1 now allows you to lock the gimbals for the three pitch/yaw/roll axes individually on engines, as 3 different settings, rather than just lock the whole gimbal for all directions. kOS now lets you access this ability (https://github.com/KSP-KOS/KOS/pull/1622).

Version v0.19.3 for Kerbal Space Program 1.0.5

Released on 2016-04-05

v0.19.3 Last (intended) 1.0.5 update.

(This is the last planned update to work with KSP 1.0.5 unless
it breaks something big that requires an emergency patch.)

BREAKING CHANGES

Triggers may now go beyond the limits of the IPU (https://github.com/KSP-KOS/KOS/pull/1542) but are no longer guaranteed to execute within a single update frame. See http://ksp-kos.github.io/KOS_DOC/general/cpu_hardware.html#triggers and http://ksp-kos.github.io/KOS_DOC/general/cpu_hardware.html#cpu-update-loop for more details.

You can now use lock objects with the same identifier from within compiled scripts, like lock throttle... (https://github.com/KSP-KOS/KOS/issues/691 https://github.com/KSP-KOS/KOS/issues/1253 https://github.com/KSP-KOS/KOS/issues/1557 https://github.com/KSP-KOS/KOS/pull/1561)

The script parsing logic has been updated to improve compile times by roughly 50% (https://github.com/KSP-KOS/KOS/pull/1566)

Version v0.19.2 for Kerbal Space Program 1.0.5

This release is here primarily to fix a problem that made
the new v0.19.1 terminal unusable for users who have to
use low resolution texture settings in the Unity graphics
configuration panel.

BREAKING

Nothing new breaking in this version is known about.

NEW FEATURES

New alias KUNIVERSE:FORCEACTIVE() can be used instead of the longer name KUNIVERSE:FORCESETACTIVEVESSEL().

More robust use of the font_sml.png file allows for replacement of font_sml.png by the end-user.
(However this may only be useful for a limited time, as Unity5 might make us implement the font differently
anyway.)

BUG FIXES

New terminal now works again at low texture resolution settings
(https://github.com/KSP-KOS/KOS/issues/1513).

New terminal shows grey color on power-off again
(https://github.com/KSP-KOS/KOS/issues/1525).

Terminal now shows a boot message that mentions the documentation URL
(https://github.com/KSP-KOS/KOS/issues/1527).

Fixed a situation that could make KSP itself crash if a script
attempted to perform an equality comparison on types that hadn't
had a meaningful implementation of equality defined. (Instead
of a proper error message about it from kOS, kOS got stuck in
recursion.)

Version v0.19.1 for Kerbal Space Program 1.0.5

This release is a patch to v0.19.0, fixing some things
found by the user community in the two days shortly after
v0.19.0 released.

It also happens to contain a few terminal window features
that were being worked on before v0.19.0 but were not deemed
ready yet when 0.19.0 was released.

NEW FEATURES

PIDLoop tutorial section in the docs edited to mention new PIDLoop()
function that did not exist back when that page was first written.
(http://ksp-kos.github.io/KOS_DOC/tutorials/pidloops.html)

New Terminal GUI doodads and widgets: A brightness slider,
and the ability to zoom the character width and height. Also
made the transparency and dimming of the 'non-active' terminals
a bit less severe so you can still read them when un-focused.
Also, these new features can be script controlled by new
suffixes, however it is unclear if that feature (doing it from
a script) will remain in the future so use it with care:
(http://ksp-kos.github.io/KOS_DOC/structures/misc/terminal.html)

BUG FIXES

Fixed boot files can be larger than the local disk
(https://github.com/KSP-KOS/KOS/issues/1094)

Fixed a bug where Infernal Robotics would break when switching vessels or
reverting. (https://github.com/KSP-KOS/KOS/issues/1501)

Fixes problems with using PartModule's SetField(), and infernal Robotics which
had been failing for all cases where the field was a "float".
(https://github.com/KSP-KOS/KOS/issues/1503).
There may have been other places this bug affected, but this is
where it was noticed. Hypothetically, anywhere the stock game's
library insists on only accepting a single-precision float and
not a double would have had the problem.

Improve steering when small control magnitudes are required.
(https://github.com/KSP-KOS/KOS/issues/1512)

Version 0.19.0 for Kerbal Space Program 1.0.5

BREAKING CHANGES

As usual, you must recompile any KSM files when using the new version.

Vecdraw :SCALE no longer applied to :START. Only applied to :VEC.

Varying power consumption might make it so if you have high IPU settings some designs might run out of power when they didn't before. (in most cases it should draw less power for most people).

!!!! Default extension of ".ks" is no longer applied to all new filenames created. But it still will be looked for when reading existing files if you leave the extension off !!!!

FileInfo information now moved to Volume (http://ksp-kos.github.io/KOS_DOC/structures/volumes_and_files/volume.html).

VOLUME:FILES was returning a LIST(), now it returns a LEXICON who's keys are the filename.

String sort-order comparisons with "<" and ">" operators were implemented wrongly and just compared lengths. Now they do a character-by-character comparison (case-insensitively). On the off chance that anyone was actually trying to use the previous weird length-comparison behavior, that would break.

NEW FEATURES

Art asset rework. The meshes and textures of the kOS CPU parts have recieved an update, and a new KAL9000 high-end computer part was included.

Varying power consumption. Units of electric charge used now varies depending on CPU speed and how much the CPU is being actually used. If your IPU setting is low, or if your program isn't doing very much and is just stuck on a wait statement, it won't use as much power. (http://ksp-kos.github.io/KOS_DOC/general/cpu_hardware#electricdrain)

Ability to read and write whole files at a time as one big string. (http://ksp-kos.github.io/KOS_DOC/structures/volumes_and_files/volumefile.html)

User Functions can now be referred to with function pointers, or "delegates". (http://ksp-kos.github.io/KOS_DOC/language/delegates.html)

Automatic serialization system to save/load some kinds of data values to JSON-format files (http://ksp-kos.github.io/KOS_DOC/commands/files.html#writejson-object-filename)

There are now some suffixes that work on all value types, even primitive scalars. To accomplish this, a new "encapsulation" system has wrapped all kOS structures and primitive types inside a generic base type. (http://ksp-kos.github.io/KOS_DOC/structures/reflection.html)

ENGINE type now supports multi-mode cases and has its gimbal accessible through :GIMBAL suffix (http://ksp-kos.github.io/KOS_DOC/structures/vessels/engine.html)

Some exceptions didn't cause beep, now they all do. (https://github.com/KSP-KOS/KOS/issues/1317)

Vecdraw :SCALE no longer applied to :START. Only applied to :VEC. (https://github.com/KSP-KOS/KOS/issues/1200)

Fixed bug that made up-arrow work incorrectly when the cursor is at the bottom of the terminal window. (https://github.com/KSP-KOS/KOS/issues/1289)

A multitude of small documentation fixes (https://github.com/KSP-KOS/KOS/pull/1341)

Fixed a bug when performing an undock (https://github.com/KSP-KOS/KOS/issues/1321)

IR:AVAILABLE was reporting incorrectly ()

Boot files now wait until the ship is fully unpacked and ready (https://github.com/KSP-KOS/KOS/issues/1280)

The Vessel :HASBODY (aliases :HASOBT and :HASORBIT) suffix was in the documentation, but had been lost in a refactor last year. It is put back now.

String sort-order comparisons with "<" and ">" operators were implemented wrongly and just compared lengths. Now they do a character-by-character comparison (case-insensitively)

Small documentation edits and clarifications all over the place.

KNOWN issues

Using lock variables in compiled scripts with a duplicate identifier (like "throttle") throws an error (https://github.com/KSP-KOS/KOS/issues/1347 and https://github.com/KSP-KOS/KOS/issues/1253).

Occasionally staging with a probe core or root part in the ejected stage will break cooked steering (https://github.com/KSP-KOS/KOS/issues/1492).

The limitations of RemoteTech integration can be bypassed by storing a volume in a variable before the ship looses a connection to the KSC (https://github.com/KSP-KOS/KOS/issues/1464).

CONTRIBUTORS THIS RELEASE

(These are generated from records on Github of anyone who's Pull Requests are part of this release.)
(Names are simply listed here alphabetically, not by code contribution size. Anyone who even had so much as one line of change is mentioned.)