1. 8
  1.  

  2. 3

    Another scripting language that doesn’t use a garbage collector is newLISP. It’s a favorite of mine and I still use it to this day.

    1. 2

      Has anyone done a serious refactoring in a language with a type system like this? I’m curious how painful it is. It feels like you really have to design your data usage upfront and if you have to refactor, that might not be possible without a huge rewrite.

      1. 4

        I have in ATS. It is painful but the type system helps direct you if you get things wrong. It can feel overwhelming to make what seem like minor refactorings and be faced with lots of compile errors and a long slog to get the system to even compile again. Similar to what adding const to existing C++ method declarations can sometimes do with cascading const changes required.

        I once had to make a small change in a production ATS program to fix a bug that was causing crashes and spent a great deal of time getting it to compile. Once it did I was confident the bug was gone but given it was a rare edge case bug I was beginning to wish for a “just compile what’s there” mode for a workaround. In reality though the type system was informing me of real issues that needed addressing - in a more dynamic system my frustration would have been happening at runtime later on.

        1. 2

          Out of pure curiosity, what sort stuff do you have ATS doing in production?

          1. 2

            I wrote parts of the backend of a bitcoin mining pool in ATS. The main program was basically a proxy that sat in front of a bitcoin daemon and provided an RPC interface for handling merge mining bitcoin with other coins. There were other utilities as well for doing long polling, when that was a thing, and sending/monitoring notifications using zeromq. To my knowledge the pool still uses some of these.