dlang-requests 1.1.0 released

ikod geller.garry at gmail.com
Tue May 12 20:32:10 UTC 2020


On Tuesday, 12 May 2020 at 09:56:44 UTC, Pavel Shkadzko wrote:
> On Sunday, 5 April 2020 at 08:59:50 UTC, ikod wrote:
>> Hello!
>>
>> Just a note that dlang-requests ver 1.1.0 released with new 
>> 'ByLine' interfaces added for get/post/put requests.
>>
>> range algorithms can be applied to server responses, so that 
>> simple chain
>>
>> getContentByLine("https://httpbin.org/anything")
>>     .map!"cast(string)a"
>>     .filter!(a => a.canFind("data"))
>>
>> should work.
>>
>> These calls work lazily so you can apply them to large 
>> documents.
>>
>> dlang-requests - HTTP client library, inspired by 
>> python-requests with goals:
>>
>> small memory footprint
>> performance
>> simple, high level API
>> native D implementation
>>
>> https://github.com/ikod/dlang-requests
>> https://code.dlang.org/packages/requests
>>
>> Always waiting for your bugreports and proposals on project 
>> page.
>>
>> Best regards!
>
> Very nice to see requests for D.
>
> It is written in README that it has a small memory footprint 
> and performance but how does it compare against Python version?

I never compared performance with Python requests, but I made 
some comparisons with
curl and wget, but results were never published. I just checked 
that there are no any odd delays.

There were some performance issues with connection pooling and 
caching redirects (like 
https://github.com/ikod/dlang-requests/issues/80), but they were 
fixed quite long ago.

>
> I am asking because we have some Python packages using requests 
> and I wanted to try to rewrite them in D. To avoid ppl raising 
> eyebrows it would be nice to know a bit more details if 
> possible.

There are some functions of Python requests that were not 
implemented for dlang - for example, conversion to json and maybe 
a few others, but I can easily add them if someone really needs 
it.

At the same time I tried to adapt API to Dlang way - like using 
lazy ranges when sending or receiving data, and like lazy byLine 
interator over response body, so your code may look and perform 
better with dlang-requests than with python.


PS. I mentioned small memory footprint in README because, for 
some reason, I failed to keep memory usage in reasonable bounds 
with std.net.curl at the time I tried to use it.



More information about the Digitalmars-d-announce mailing list