• 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 3 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.

            • eesmith 3 days ago
            • 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 4 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 3 days ago

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