Plugins

1.0.1

Plugin framework for Swift applications
Jomy10/Plugins

What's New

v1.0.1

2024-12-08T17:22:12Z

Disable logging for now

Plugins

examples | documentation


A simple plugin framework for Swift applications.

Load dynamic libraries and call their functions dynamically.

Example

Plugin.swift

@_cdecl("loadPlugin")
public func loadPlugin(_ data: UnsafeMutablePointer) -> Int32 {
  print("Plugin was loaded!")
  return 0
}

@_cdecl("somePluginFunction")
public func somePluginFunction() {
  print("Called some library function")
}

Main.swift

let plugin = Plugin(name: "Plugin", location: URL.currentDirectory())
// output: Plugin was loaded!
typealias SomePluginFunction = @convention(c) () -> ()
let pluginFn: PluginFunction<SomePluginFunction> = plugin.loadFunction(name: "somePluginFunction")!
pluginFn.function()
// output: Called some library function

We can compile the above Plugin.swift file with Swift Package Manager by defining a library product for the Plugin target:

.library(
  name: "Plugin",
  type: .dynamic,
  targets: ["Plugin"]
)

More examples, see EXAMPLES.md.

Logging

The library also supports some basic logging using swift-log.

Description

  • Swift Tools 5.7.0
View More Packages from this Author

Dependencies

  • None
Last updated: Thu May 15 2025 08:52:15 GMT-0900 (Hawaii-Aleutian Daylight Time)