http://qs321.pair.com?node_id=11119036


in reply to Re^13: Modernizing the Postmodern Language?
in thread Modernizing the Postmodern Language?

> PMCs, where every data type had virtual methods in well-defined slots instead of accessor macros

Well my first idea was, why not write a wrapper macro/class which applies the accessor macros in form of "virtual methods in well-defined slots"?

> The best way I've ever figured out to do this is to introduce an abstraction layer for XS that's not XS

Are you going into the same direction here?

Why would we need to gradually migrate away from XS then?

Cheers Rolf
(addicted to the Perl Programming Language :)
Wikisyntax for the Monastery

UPDATE s/CS/XS/ typo

  • Comment on Re^14: Modernizing the Postmodern Language?

Replies are listed 'Best First'.
Re^15: Modernizing the Postmodern Language?
by chromatic (Archbishop) on Jul 08, 2020 at 19:13 UTC
    Well my first idea was, why not write a wrapper macro/class which applies the accessor macros in form of "virtual methods in well-defined slots"?

    It's been a long time since I thought about such a thing, but I don't know how much work it would be to write lvalue macros that could call set_ methods appropriately.

    Why would we need to gradually migrate away from XS then?

    CPAN/DarkPAN authors who want to support multiple language versions with a single release.

      > CPAN/DarkPAN authors who want to support multiple language versions with a single release.

      Maybe a misunderstanding:

      Are you talking about migrating away from the

      • XS API or
      • XS implementation?

      If such a wrapper was implemented as linkable library in XS, why would one need to write differently for various Perl versions?

      (Disclaimer my $XS_know_how ~~ 0

      Cheers Rolf
      (addicted to the Perl Programming Language :)
      Wikisyntax for the Monastery

      °) dumbmatch operator ;-)

        I think it's both, but that may not be entirely true.

        XS is a series of macros, yes, but it's also a sort of preprocessor template system for C, so it's theoretically possible to emit different code for different versions of Perl.

        In practice, that sounds really difficult to implement.