I’m happy to announce the release of Diesel 2.3. This release contains various extensions to the query DSL provided by Diesel and enables using Diesel in web browsers via the wasm32-unknown-unknown target.

Checkout the full release announcements for more details.

As always you can support my work on Diesel by contributing or sponsoring the project.

I would like to use this possibility to thank NLNet Foundation for funding the newly added window function extension.

I’m happy to answer any question that comes up.

    • weiznich@programming.devOP
      link
      fedilink
      arrow-up
      6
      ·
      17 hours ago

      diesel-async exists for several years now. It’s stable enough to be used by crates.io as database library for serving essential all crates in the rust ecosystem.

      At this point I‘m not sure what else to do given that the crate is literally linked from the diesel home page, all relevant issues and literally every else this came up before. I‘m just not sure why people still believe that it doesn’t exist. So maybe someone would be able to explain that?

      • sugar_in_your_tea@sh.itjust.works
        link
        fedilink
        arrow-up
        5
        arrow-down
        1
        ·
        16 hours ago

        I keep looking at the original project and the last discussion is basically them saying it’s not feasible. So I guess I just never bothered looking for other crates.

        That repo has relatively few contributors, is still <1.0, and if it was easy enough to ship an extension, why wasn’t it included in the main repo? Surely it would be nicer to enable an “async” feature instead of have a separate crate, no? Or at least have it sit next to the sync crate?

        I think that explains why people either don’t know about it or dismissed it.

        • weiznich@programming.devOP
          link
          fedilink
          arrow-up
          5
          ·
          edit-2
          12 hours ago

          Well there are a few reasons not to have it in diesel itself. One is that the main crate already is really large. Adding another massive feature like that would make it make harder to maintain. I think about splitting up diesel into multiple parts instead from time to time. The other important reason is that diesel itself is stable, while diesel-async is still a bit in the flux due to the general instability of the async ecosystem and async rust in general. For example we still miss several language features like asynchronous drop or proper async closures that allow to reason about the future they return to provide an actual stable interface for diesel-async. While all of that likely will not result in a fundamental change in the provided interface it remains a breaking change to make adjustments as soon as these features exist and are stabilised. That’s incompatible with the stability guarantee given by diesel itself.

          As for having it next to diesel itself: Technically these crates are still separate projects maintained by different set of peoples. Diesel itself is maintained by the diesel core team, where I happen to be a member of that team. That team has a limited amount of capacity. Diesel-async is maintained by myself in whatever time is left after the time I spend on diesel. Sure it would be possible to have it in the diesel organisation as well, but I honestly do not see the relevant capacity there yet. You are welcome to change that. See the linked blog post for details on how you can contribute to that.

          • sugar_in_your_tea@sh.itjust.works
            link
            fedilink
            arrow-up
            1
            ·
            edit-2
            7 hours ago

            Awesome! I honestly didn’t recognize that the username here and from the repo were the same.

            Honestly, the fact that you maintain diesel and diesel-async gives it a ton of credibility. I’ll have to play with it! I was mostly worried this was a shim made by some rando in the community and it could break at any time, but if the core maintainer is also associated with the parent project, that’s less likely.