FerretX: Difference between revisions

From Woozle Writes Code
Jump to navigation Jump to search
mNo edit summary
No edit summary
Line 7: Line 7:
The inspiration for FerretX is a Microsoft technology which I think was called "ActiveX DLLs", but the [[wikipedia:ActiveX|Wikipedia entry on ActiveX]] only mentions it in passing and certainly doesn't do credit to how useful it was in environments like Visual Basic 6 and Access 97.
The inspiration for FerretX is a Microsoft technology which I think was called "ActiveX DLLs", but the [[wikipedia:ActiveX|Wikipedia entry on ActiveX]] only mentions it in passing and certainly doesn't do credit to how useful it was in environments like Visual Basic 6 and Access 97.
==Concept==
==Concept==
The idea is to use JSON (or any data-communication protocol that can encode arbitrary data-structures in a binary-safe way) to communicate:
The idea is to use JSON (or any open protocol that can encode arbitrary data-structures as text in a binary-safe way) to communicate:
* class interfaces
* class/object interfaces
* data, whether structured or scalar
* object data
 
We will need to start with:
* a command to retrieve all interfaces
* a command to retrieve the details of a particular interface
* a standard structure for defining method APIs (static/dynamic, paramter/type list, return type)
* a way to call any given method within an interface (directly for static methods, or with an object as an implicit argument for dynamic methods)


{{hilite|WRITING IN PROGRESS}}
{{hilite|WRITING IN PROGRESS}}

Revision as of 00:34, 24 August 2023

Intro

The key idea here is to make it easier for any language to make use of libraries written in any other language, and for compiled languages to make use of compiled libraries without having to recompile and link them[1]. It also is especially useful in integrated development environments with code-aware autocompletion (CAA) features, in that it provides the necessary information for CAA when using a library whose source-code is not included in the project.

The immediate need for this comes from my wish to use certain libraries in PHP that are well-supported for other languages but either not available in PHP at all or else poorly supported -- notably graphical interfaces and "ncurses" (a full-screen text-mode library).

The inspiration for FerretX is a Microsoft technology which I think was called "ActiveX DLLs", but the Wikipedia entry on ActiveX only mentions it in passing and certainly doesn't do credit to how useful it was in environments like Visual Basic 6 and Access 97.

Concept

The idea is to use JSON (or any open protocol that can encode arbitrary data-structures as text in a binary-safe way) to communicate:

  • class/object interfaces
  • object data

We will need to start with:

  • a command to retrieve all interfaces
  • a command to retrieve the details of a particular interface
  • a standard structure for defining method APIs (static/dynamic, paramter/type list, return type)
  • a way to call any given method within an interface (directly for static methods, or with an object as an implicit argument for dynamic methods)

WRITING IN PROGRESS

Notes

I need to understand Spritely Goblins and OCapN, which sound like one or the other of them might be basically the same idea. It certainly sounds like it ends up supporting similar capabilities.

Footnote

  1. In the case of interpreted languages, this often means recompiling the language interpreter itself, which can create a technical debt situation since the standard package updates can no longer be used