- From now on, the library disables all FPU exceptions at startup.
- Backported a few methods so the library can again be run on the .NET 5
- Fixed CoreCLR location issue on Windows
- Added the documentation (at last!)
- Implemented various minor fixes, improvements and refactoring
- Added
apropos
facility - Added .NET-callable classes
- ECL support
- Reworked the usage of
*default-assemblies*
variable - Reworked the Asp .Net Core example
- Allowed .NET to handle SIGRTMIN on Linux
- Added the WPF package browser example
- Fixed few bugs with invalid primitive type handling
- Added an alias for
System.Void
- Handled
*print-escape*
in the printer facility - Fixed MZ array type resolution
- Implemented a minor addition to custom syntax for convenience
- Fixed a bug with CoreCLR reloading on foreign library redefinition
- Added dependency on the
global-vars
library, for global variables - Reworked
rwlock
- Embraced
bt2
API frombordeaux-threads
library - Implemented various pathname-related fixes, especially on Windows
- Updated CircleCI pipeline to the latest .NET
- Added extensible printer facility
- Improved type name parser(MZ vectors, arrays of generic type definitions, identifier handling)
- Added handling of MZ arrays
- Minor improvements in custom syntax parsing
do-enumerable
now properly disposes enumerators- Added
bike-type-p
predicate for .NET type checking - Fixed boxing of primitive values
- Handled unboxing of IntPtr values
dotnet
command output now uses UTF-8 by default on Windows- Moved CircleCI jobs to .NET 5
- Interop assembly now rebuilds on library build
- On Windows, bike defaults to desktop SDK, which allows for WPF and Windows Forms GUI frameworks.
- Tested on SBCL & CCL
- Fixed assembly search after image dump
- Fixed minor misprints in type declarations
- Fixed MacOS-related misprints
- Saner error messages for custom syntax
- Mentioned SBCL improvements in README
- Fixed .NET 6.0 trusted assembly loading
- Implemented several reader macros for convenience
- Take a look at
examples/syntax.lisp
- Take a look at
REFLECTION-PROPERTY
andREFLECTION-REF
now work for COM objects- Added
DNAREF
function and its(SETF DNAREF)
counterpart for convenient multidimensional array access - Added
WITH-FIXED
macro, which behaves exactly like C#fixed
operator, i.e. pins an object and retrieves pointer to object's data. May be useful for array etc.
- Fixed a small bug with wrong keyword arguments
- Implemented proper shutdown sequence which gets invoked on image dump
- Print dotnet object using plain
.ToString()
in case when both*PRINT-READABLY*
and*PRINT-ESCAPE*
areNIL
- Updated installation guide in README
- Fixed misprint left from previous version
uiop:native-namestring
function seems to be somewhat broken on CCL on Windows. It does not provide paths with backslashes which are expected bycoreclr_initialize
GET-LOADED-ASSEMBLIES
now utilizes interop library method and does not accept any arguments- Removed
CURRENT-APP-DOMAIN
function from the list of exported functions
- Added few fixes for .Net Core 3.0 compatibility
GET-LOADED-ASSEMBLIES
now accepts optionalAppDomain
argument
- Put all the dependencies into
bike.asd
file - Make use of latest CCL for CI tests
- Fixed callbacks.lisp example file: use namespaces before building an assembly
- Fixed return value cast for callbacks
- Added few more examples
- Use
flet
inside ofexception-case
instead of lambdas
- Added the ability to invoke interface methods of an object (i.e. implemented by private interface implementation)
- Added useful macros for working with
IDisposable
-WITH-DISPOSABLE
and friends - Added
DO-ENUMERABLE
macro, which works like C#foreach
- Added
EXCEPTION-BIND
andEXCEPTION-CASE
macros which act like theirHANDLER-*
counterparts but for .Net exceptions
- Wrap .Net exceptions coming from callbacks into TargetInvocationException for not losing .Net stack traces
- Added
import-assembly-from
function for importing assemblies from files - Allowed use and unuse a list of namespaces at a time
- Made use of APP_PATHS and APP_NI_PATHS during CoreCLR initialization
- Implemented target invocation cache akin to .Net DLR one. All non-reflection APIs use this
- Compiled trampolines are cached(based on member declaring type and argument types) and reused later on
- Added internal
defknown
API based on trampoline compilation- A similiar API for establishing direct calls would be exposed to the user a bit later
- Optimize count of host methods in favor of
defknown
API - Implemented generic type caster (use
box
function with optional parameter) - Renamed
get-type
function tobike-type-of
get-type
now acts exactly asType.GetType
, i.e. retrieves a type by name- You should use
resolve-type
function for that, however, because of it is being more robust
- You should use
- .Net exceptions caught by Lisp code inside callbacks are now unwrapped into .Net exceptions on return to .Net code
- Moved .Net initialization to host.lisp file. Removed an amount of duplicate code
- Fixed few bugs in .Net type name parser
- Use reflection until method resolution would be implemented
- Fixed multidimensional array type resolution
0.4.0 - AspNet Core MVC example. New type resolution process. Signal handling on linux improvements.
- Improved coexistence of CoreCLR and Lisp runtimes on Linux.
- Handle CoreFX signals by lisp, except SIGCHLD, which is perfectly handled by .Net
- Added an example of embedding lisp into AspNet MVC pipeline
- Completely reworked type resolution process.
- Removed
import-type
function. Please use only theresolve-type
function.
- Removed
- Support for
ref
and*
(pointer) types - Added clean.lisp script
- Improved CoreCLR version comparison during library search
- Added
load-assembly-from
function, to load assemblies from files - Added enum type handling, see
enum
function - Improved trampoline compilers, they now support pointer and ref types
- Changed keyword parameter
:type
oflist-to-bike-vector
function to:element-type
- Other minor bugfixing and improvements
- Fixed property setter trampoline compiler
- Added SBCL to CI tests
- stassats implemented a workaround for SBCL/CoreCLR signal interference on Linux
- Fixed bug with handle-table resize
- Verified that library works inside SBCL/nanoserver container
docker pull love5an/dotnet-core-sdk-common-lisp:2.2-sbcl-1.5.4-nanoserver-1903
- Implemented several internal APIs for future enhancements of type resolution
- Major refactoring
- Split internals system into several files
- Added generic method invocation support
- Reflection-based API is now separated from the main one, which uses a global cache of .Net type member descriptions, and contains pre-compiled direct trampolines for .Net fields, methods and properties
- Fixed several memory leaks
- Finally implemented proper LPASTR cffi type on Windows, for strings used by coreclr initialization API
- Added dummy logger for .Net interop library
- Added CI tests for Clozure CL on Linux/x86_64
- Few minor CCL fixes
- Minor misprint fix