mmastrac 3 days ago

I'll raise you a polyglot script that doesn't require eval: :)

  1 // len("""
  console.log('javascript');
  /* """)
  print('python');
  # */
Example:

  # python3 /tmp/test.py
  python
  # node /tmp/test.js
  javascript
I _believe_ the only source limitations are the the JS cannot contain `"""` and Python cannot contain `*/`.
  • d0mine 2 days ago

    use r"" (raw-string literals), to avoid breaking on invalid Python escape sequences in the javascript part.

taraparo 3 days ago

You could also write your app in Haxe instead and cross compile to Javascript, Python, C++, Java, Lua,...

  • jorl17 3 days ago

    It's so good to see Haxe mentioned!

    I ported an entire AS3/Flash game to Haxe that my friends had written during our college years, as a kind of "thank you" present for ten years of friendship (adding mobile, cross-platform, gamepad controller, netplay and other things).

    While the tooling was spotty, I found the experience wonderful! Haxe felt like a decent language with laudable goals and a nice community.

    I hope one day I find another reason to work with Haxe.

    Does anyone have any project that is using Haxe in production? Would love to hear about such stories!!

    • outofpaper 3 days ago

      Not my project but there's always Dead Cells and the stories behind its developed.

  • rafram 3 days ago

    This seems to be intended as an interesting experiment (in the same genre as things like quines). There are obviously more production-ready ways to compile code for multiple runtimes.

    • omneity 3 days ago

      Haxe is not just an experiment. It is a mature language and ecosystem used in production. You will find it powering many games for example.

      I used it a long long time ago on one of my first freelance gigs (with a PHP target). It was already quite solid and saved me the need to use a PHP framework.

      I also remember using it as a typed javascript pre-compiler, at a time where FB Flow and MS Typescript were still fighting over developer mindshare. I would probably still use it if TS didn't take over the ecosystem entirely.

      https://haxe.org/use-cases/who-uses-haxe.html

      • rafram 3 days ago

        "This" = Polycompiler (the OP project), not Haxe. Polycompiler appears to be intended as a toy/experiment, so it doesn't really make sense to compare it to Haxe.

  • betterThanTexas 3 days ago

    To what extent does Haxe still align with modern Javascript? Is modern javascript even considered to be the basis of actionscript anymore?

gobblik 3 days ago

The tricks it uses are explained well in the video. Would love to see this expand to include more languages.

GeekFortyTwo 3 days ago

Ok, now write your code in a metalanguage(i believe fut might work), and now we can write once and run on two different engines.

  • bitwize 3 days ago

    Maybe we can convince Marc Feeley to write a backend for Gambit that targets this.

    • belmarca 3 days ago

      Hey, I'm writing this from Pr Feeley's lab :)

      I understand your comment was tongue-in-cheek, but we certainly have an interest in cross-language interoperability! You can check out our work here:

      - https://try.gambitscheme.org is Gambit compiled to JavaScript with the universal backend. Evaluate \alert("hello!") at the REPL to see the JS<->Scheme Syntactic FFI in action.

      - https://codeboot.org is our own Python interpreter running in the browser. It has a Python<->JS FFI. Evaluate \alert("hello!") at the REPL to test it out. You can even import JS libraries using the standard Python syntax by replacing the identifier with a string: import "https://mycdn.com/mylibrary.js".

      - https://github.com/gambit/python is a Gambit module that integrates Gambit with CPython, using the same syntactic FFI. You can import PyPI modules from Gambit.

      References to conferences/papers describing these features can be found on my GH profile (https://github.com/belmarca). AMA if you wish!

      • bitwize 3 days ago

        It was more "ha ha only serious" than purely tongue-in-cheek. I'm familiar with Gambit's multi-backend targeting and have experimented with its JS backend. I consider it one of the quickest, and most comprehensive, ways to get "Scheme in the browser".

        • belmarca 2 days ago

          BTW I'd love to hear your feedback if you have tried the above examples!