Re: ddbc with Vibe-d
On Monday, 13 February 2023 at 01:43:38 UTC, Steven Schveighoffer wrote: I think it needs to be immutable if it's a reference. -Steve I have tested args with isWeaklyIsolated!(typeof(arg)) and it looks like good news 👍️ Thanks for your help, Steve.
Re: ddbc with Vibe-d
On 2/12/23 3:29 PM, Steve wrote: In my case args will just be the body of the HTTPServerRequest which is JSON. How can I get that JSON and pass it to async() in a manner that ensures I get a worker thread? I think it needs to be immutable if it's a reference. -Steve
Re: ddbc with Vibe-d
On Sunday, 12 February 2023 at 19:38:47 UTC, Steven Schveighoffer wrote: That might work, depending on args. As documented in the API, if anything in args are mutable references, then it is run as a task, and the same problem still applies (it will use a fiber, and count on the concurrency of vibe's fibers to deal with the asynchronicity). If it is possible, it will run in a worker thread, and then it can execute concurrently. I believe you can do: isWeaklyIsolated!(typeof(args)) to see if it will run in another thread. I admit not having any experience with this function. -Steve In my case args will just be the body of the HTTPServerRequest which is JSON. How can I get that JSON and pass it to async() in a manner that ensures I get a worker thread?
Re: ddbc with Vibe-d
On 2/12/23 1:01 PM, Steve wrote: On Sunday, 12 February 2023 at 15:24:14 UTC, Steven Schveighoffer wrote: Any synchronous calls will just be synchronous. They aren't going to participate in the async i/o that vibe uses. In other words, when you block on a call to sqlite, it will block everything else in your web server until that completes. Would this be the correct approach to stop it blocking?: ```d auto result = async(&doSqliteStuff, args...).getResult(); ``` That might work, depending on args. As documented in the API, if anything in args are mutable references, then it is run as a task, and the same problem still applies (it will use a fiber, and count on the concurrency of vibe's fibers to deal with the asynchronicity). If it is possible, it will run in a worker thread, and then it can execute concurrently. I believe you can do: isWeaklyIsolated!(typeof(args)) to see if it will run in another thread. I admit not having any experience with this function. -Steve
Re: ddbc with Vibe-d
On Sunday, 12 February 2023 at 15:24:14 UTC, Steven Schveighoffer wrote: Any synchronous calls will just be synchronous. They aren't going to participate in the async i/o that vibe uses. In other words, when you block on a call to sqlite, it will block everything else in your web server until that completes. Would this be the correct approach to stop it blocking?: ```d auto result = async(&doSqliteStuff, args...).getResult(); ```
Re: ddbc with Vibe-d
On 2/12/23 6:05 AM, Steve wrote: Hi, I'm trying D for the first time and so far I'm really impressed with both D and vibe-d. My test project is an application server and I want to use SQLite3 as its database. I understand Vibe.d uses an async model under the hood and so my question is are Vibe-d and ddbc compatible? Thanks. Any synchronous calls will just be synchronous. They aren't going to participate in the async i/o that vibe uses. In other words, when you block on a call to sqlite, it will block everything else in your web server until that completes. There are several projects that are built to work with vibe-d sockets. mysql-native is one, and vibe-d-postgresql is another. I don't know if there is an sqlite project that is vibe-specific. But sqlite typically is using files anyway, or maybe even memory, so you aren't waiting on network i/o. -Steve
ddbc with Vibe-d
Hi, I'm trying D for the first time and so far I'm really impressed with both D and vibe-d. My test project is an application server and I want to use SQLite3 as its database. I understand Vibe.d uses an async model under the hood and so my question is are Vibe-d and ddbc compatible? Thanks.