Change Log

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[4.0.2] 2024-11-22

Changed

  • The latest available version is now fetched from AWS rather than Shopify
  • Updated Excel DNA to 1.8.0
  • Updated Python.Net to 3.0.4
  • Updated LicenseSpring SDK to 7.30.0
  • Updated NLog to 5.3.15
  • Updated MessagePack to 2.5.192
  • Updated DuckDB.Net to 1.1.3

[4.0.1] 2024-10-24

Fixed

  • Fixed a problem with nested functions returning cached objects. Amended the object cache key generation so multiple functions run within the same cell will generate unique keys.

[4.0.0] 2024-10-11

Added

  • New DuckDbQuery() function allows DuckDB SQL to be run in Excel.

Fixed

  • Adjusted the license checks so expired licenses do not request product details.
  • Remote module imports now work for Python 3.12

[3.3.2] 2024-06-27

Fixed

  • Type hinted functions with optional parameters were not picking up the defaults correctly when the function was not hinted with Optional

Changed

  • A more user-friendly error messge is returned if a cache key is passed when an Excel range is expected.

[3.3.1] 2024-05-24

Fixed

  • The ViewPyObject() function now displays numpy vectors

Changed

  • The digital signature used for code signing has been updated as the previous certificate expired in May 2024.

[3.3.0] 2024-05-16

Added

  • Added support for Python 3.12, note that the remote module imports do not yet work for Python 3.12

Updated

  • The bundled Python is now Python 3.11
  • Updated Excel DNA to 1.7.0
  • Updated Python.Net to 3.0.3
  • Updated Python.Included to 3.11.6
  • Updated LicenseSpring SDK to 7.26.0
  • Updated NLog to 5.3.2
  • Updated MessagePack to 2.5.140

[3.2.0] 2024-03-14

Fixed

  • Missing string arguments are correctly detected and passed to Python as None not ""
  • Python 3.11 introduced slightly different handling of type hints with a None default, this is now handled so all Python versions have the same behaviour in xlSlim

Added

  • Streaming (RTD) functions can now accept cached Python objects.

[3.1.5] 2023-11-29

Fixed

  • Fixed a bug in the ActivatePremiumLicense() function introduced in Release 3.1.2.

[3.1.4] 2023-11-16

Fixed

  • Context and ribbon menus can now have spaces in the labels

[3.1.3] 2023-09-22

Fixed

  • Improved the performance of list arguments.
  • Optional arguments dependent on function calls are now supported, for example def f(x=date(2023,9,22))...

Changed

  • Lists of doubles are now passed into Python functions as native Python lists, previously they were passed as wrapped .Net sequences.
  • Updated Python.Net to 3.0.2

[3.1.2] 2023-09-14

Added

  • When loaded the addin checks if a newer version is available and displays a popup window with details. This can be disabled by setting HKEY_CURRENT_USER\xlslim\skipVersionCheck to Y
  • When loaded the addin checks if a premium license is within 14 days of expiry and displays a popup window with details. This can be disabled by setting HKEY_CURRENT_USER\xlslim\skipExpiryCheck to Y

[3.1.1] 2023-08-12

Fixed

  • Python function registrations can be added to the named range XLSLIM_RUN_AT_START. They will be run when workbooks are opened.

[3.1.0] 2023-07-22

Added

  • Python functions expecting lists of lists can now be passed a range from Excel. Previously only the first row was being passed from Excel.
  • Pandas NaT values are recognised and a #NA error is returned

Fixed

  • Python datetime.date and datetime.time instances are correctly handled when returned from functions
  • Lists of strings are not unpacked into list of lists of characters when returned to Excel
  • Optional lists now work correctly when not passed from Excel, previously the mapped function was not being called
  • Removed unused sections in the xlSlim License Manager application
  • The utility function ViewPyObject() has been improved

Changed

  • nan and inf doubles are now returned as #NUM errors
  • nulls and None are now returned as #NA errors
  • Lists of strings are not unpacked into list of lists of characters when returned to Excel
  • Updated LicenseSpring SDK to 7.20.0
  • The digital signature used for code signing has been updated as the previous certificate expired in June 2023.

[3.0.0] 2023-06-02

Added

  • New interactive mode where cells starting with "#py" are treated as Python code and are run in the worksheet
  • New Python editor to edit Python code contained within cells.
  • Cells in the named range XLSLIM_RUN_AT_START are calculated when workbooks are opened.

Fixed

  • Fixed displaying pandas dataframes that contain timezone aware datetime64 values
  • Extra Python and DLL paths are now cached in the Windows registry along with the previously cached Python executable path.

Changed

  • Python module analysis is now much faster
  • Updated Excel DNA to 1.7.0-rc4
  • Updated LicenseSpring SDK to 7.17.1
  • Updated NLog to 5.1.4
  • Updated MessagePack to 2.5.108

[2.1.0] 2023-04-14

Added

  • Added simple context and ribbon menus.

[2.0.10] 2023-03-22

Added

  • Added a new CreatePyModule() Excel function to create modules from text.

Fixed

  • Fixed a missing acquisition of the GIL while analyzing modules (part of the function registration process).
  • Include the function name in the object cache keys generated by RTD functions.

[2.0.9] 2023-02-16

Added

  • Added support for remote module imports

[2.0.8] 2022-12-01

Added

  • Added support for VBA event handling, Application.OnTime and Application.OnKey methods.
  • Added a new function ClearCacheItem() to remove an item from the object cache.

[2.0.7] 2022-11-09

Added

  • Added support for Python 3.11

Changed

  • Updated Python.Net to 3.0.1
  • Updated LicenseSpring SDK to 7.10
  • Updated NLog to 5.0.5

[2.0.6] 2022-10-12

Fixed

  • Fixed a problem initialising Python 3.7, this was a result of the platform module patch added in 2.0.4.

Changed

  • pandas timestamps and numpy datetime64 types are now treated as dates when returned from functions.

[2.0.5] 2022-10-06

Fixed

  • Null values are filtered out of ranges of cached objects.

Changed

  • The CreateRange() utility function now works with 2d ranges. The results can be passed as dictionary inputs.

[2.0.4] 2022-10-02

Added

  • Added support for Python dictionaries. Dictionaries can be passed as function arguments and returned as function results. Dictionaries can be created from two columns in Excel.
  • Python classes are now registered as Excel functions. Objects can be created directly within Excel.
  • Python data classes are also supported and can be created directly within Excel.
  • Python enums have limited support, enums defined within registered modules are recognised and the enum text can be passed to functions that expect enums.
  • Added new utility functions: GetAttr and GetItem

Fixed

  • Fixed a reference counting bug when passing lists of cached objects
  • The utility function ViewPyObject() supports more data types including datetimes and lists.
  • Fixed a bug introduced in 2.0.1 where boolean results were returned as doubles.
  • Patched the Python platform module's use of cmd as this is seen as an exploit by some antivirus vendors.

Changed

  • Lists of datetimes can now be passed from Excel, they are correctly parsed.

[2.0.3] 2022-09-07

Fixed

  • Fixed a bug so the Excel COM object functionality is only imported when used. This was causing the bundled Python to fail as it does not contain pythoncom.

[2.0.2] 2022-09-01

Added

  • Enable access to the Excel COM object via the new XLSLIM_COMAPPFUNC global. Any functions accessing the global are registered as macro functions.
  • New utility function XlSlimVersion() to return the xlSlim version to Excel

Fixed

  • Fixed a bug with type hinted functions returning lists with numpy floats.
  • Fixed the setting of sys.prefix and sys.exec_prefix so the site module is correctly processed.

[2.0.1] 2022-08-25

Added

  • Support for numpy floats (np.float16, np.float32, np.float64). These can now be returned from Python functions and used in type hints.

Fixed

  • Load user modules from file rather than text, this enables debugging.

[2.0.0] 2022-08-12

Added

  • Python iterator classes and generator functions (async and regular) can be registered and then stream data to Excel via the RTD(..) internals

Changed

  • Refactored the Python object cacheing
  • Updated MessagePack to 2.4.35
  • Updated LicenseSpring SDK to 7.8
  • Updated Python.Net to 3.0.0rc4

Fixed

  • Python functions that return None are handled better, an empty string is sent to Excel
  • Add the current Python module location to the sys.path
  • Python logs use the correct module name
  • Fixed the log sizing

[1.0.3] 2022-07-17

Fixed

  • Reverted removal of binding redirects in the app.config files from v.1.0.2

[1.0.2] 2022-07-01

Added

  • Can specify additional Python module search paths when registering modules
  • Can specify additional Windows DLL search paths when registering modules
  • Can control which functions are imported from a module and have a different function name in Excel
  • Can add PrefixBuiltInFunctions to the appSettings in xlSlim64.xll.config file to prefix builtin function names

Changed

  • Cleaned up the app.config files
  • Removed unnecessary XML and config files from installation

[1.0.1] - 2022-06-23

Added

  • Added 3rd party software licenses file.
  • Added this change log

Changed

  • Lowered the default logging levels to be INFO, was DEBUG
  • Configured all logs to be rolling logs
  • Renamed the background process log from addinlog.txt to xlslim-subproc.log
  • Renamed the Excel add-in log from addinlog.txt to xlslim-addin.log

[1.0.0] - 2022-06-16

Added

  • Initial public release made available at https://www.xlslim.com