bugGNU Octave - Bugs: bug #56176, Implementation of loadlibrary...

 
 

bug #56176: Implementation of loadlibrary function (revisited)

Submitter:  avlas <kupiqu>
Submitted:  Sat 20 Apr 2019 06:15:48 AM UTC
   
 
Category:  Octave Function Severity:  1 - Wish
Priority:  3 - Low Item Group:  Feature Request
Status:  None Assigned to:  None
Originator Name:  loadlibrary Open/Closed:  * Open
Release:  * dev Operating System:  * Any
Fixed Release:  None Planned Release:  None
* Mandatory Fields

Add a New Comment Rich Markup
   

Thu 31 Aug 2023 12:12:52 AM UTC, comment #3: 

This request has been inactive for some time now, but loadlibrary and its family of associated functions seem a useful tool for API and hardware driver implementations (which is what I'm trying to use it for).
I would like to see it implemented as well.  Not being terribly familiar with the ins-and-outs of linked libraries, I don't know the complexity of the project but it gets a vote from me as a user.

Emil Wilke <emil>
Fri 12 Jul 2019 11:05:26 PM UTC, comment #2: 

Many years ago, someone made the assertion that this project would depend on improved classdef support in Octave. I've seen that repeated, but I'm not sure I fully understand. As far as I can tell, the only parts of loadlibrary in Matlab that use classes are the 'libpointer' and 'libstruct' functions for dealing with C pointers and structs. Is that right or did I miss something else?

As I understand it, this project would add ordinary functions to Octave: calllib, libfunctions, loadlibrary, and unloadlibrary. When libraries are loaded with loadlibrary, they are stored internally in the interpreter with a string name as the lookup key. I don't think there is any kind of handle class interface to deal with. It's only when more complicated pointer and struct types are needed that classes come into the picture. For a simple example


loadlibrary ("libc")
calllib ("libc", "printf", "%s, %s\n", "Hello", "world")


It seems to me that one of the harder parts of this project is preprocessing and parsing C header files to automatically build a table of function prototypes, and then building all the rules for automatically converting Octave data types into C equivalents and the reverse. The mechanics of loading a dynamic library and invoking a function pointer are relatively simple. I've gone through a lot of similar trouble with automatic argument and return value conversion in the Pythonic package.

Mike Miller <mtmiller>
Group Member
Sat 20 Apr 2019 01:49:44 PM UTC, comment #1: 

Sorry I misclassified the issue. Current categories make more sense.

[I will send an email to the help mailing list to see if someone knows a workaround for this in the meantime]

avlas <kupiqu>
Sat 20 Apr 2019 06:15:48 AM UTC, original submission:  

Would you please consider implementing a loadlibrary function compatible with Matlab?

I saw a couple of discussion bursts from 5-10 years ago about this. At that point the main problem seemed to be that Octave didn't support classes (https://lists.gnu.org/archive/html/octave-maintainers/2013-11/msg00406.html), but this is not the case anymore.

A bit of context and explanation of my request:

I am trying to use Transplant (https://transplant.readthedocs.io/en/latest/) to call Octave from Python. I am aware about Oct2Py, which I have also started to use, but Transplant seems more comprehensive, powerful and actively maintained. Also, Oct2Py presents some issues (https://github.com/flathub/org.octave.Octave/issues/56)

According to main Transplant Dev, using Transplant should be quite straightforward if the loadlibrary function was available in Octave (https://github.com/bastibe/transplant/issues/74)

avlas <kupiqu>

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach Files:
   
   
Comment:
   

No files currently attached

 

Depends on the following items: None found

Digest:
   bug dependencies.

 

Carbon-Copy List
  • -email is unavailable- added by emil (Posted a comment)
  • -email is unavailable- added by gyom
  • -email is unavailable- added by jwe (Updated the item)
  • -email is unavailable- added by kupiqu (Submitted the item)
  •  

    There are 0 votes so far. Votes easily highlight which items people would like to see resolved in priority, independently of the priority of the item set by tracker managers.

    Only group members can vote.

     

    Follow 5 latest changes.

    Date Changed by Updated Field Previous Value => Replaced by
    2020-02-08 mtmiller Dependencies- bugs #57770 is dependent
    2019-11-21 gyom Carbon-Copy- Added gyom
    2019-04-20 jwe Severity3 - Normal 1 - Wish
        Priority5 - Normal 3 - Low
        Item GroupMatlab Compatibility Feature Request

    Back to the top

    Powered by Savane 3.13-4448.
    Corresponding source code