Thread overview
[GSoC] std.experimental.xml is now a PR!
Aug 24, 2016
Lodovico Giaretta
Aug 24, 2016
Suliman
Aug 24, 2016
Lodovico Giaretta
Aug 24, 2016
Suliman
Aug 24, 2016
Lodovico Giaretta
Aug 24, 2016
Chris Wright
Aug 25, 2016
Lurker
Aug 27, 2016
Lodovico Giaretta
Aug 28, 2016
NVolcz
Oct 02, 2016
Suliman
August 24, 2016
Hi!

I'm pleased to announce that my GSoC project, a replacement for the outdated std.xml, is now a Phobos PR! [1] It is an (almost complete) mirror of my repository [2], which is also available on DUB [3].

I would like to thank my mentor Robert burner Schadek for his great support and everybody who already gave some feedback during these months.

The PR is not meant for immediate merging. Some things still need improvement (docs/unittests/...) while others will come in a second iteration (advanced DTD handling). It is meant to for some reviews, focusing mainly on the design and usability of the library.

In the PR description you will find all the details, including a nice "wishlist" of things that I found missing in D during the development and some open questions.

So, if you have any consideration/suggestion, drop a line here or on the PR, and if you find bugs, don't hesitate to file an issue on the issue tracker of my repository.

Thank you very much!

[1] https://github.com/dlang/phobos/pull/4741
[2] https://github.com/lodo1995/experimental.xml
[3] https://code.dlang.org/packages/std-experimental-xml
August 24, 2016
Add more examples of usage please.
August 24, 2016
On Wednesday, 24 August 2016 at 10:22:04 UTC, Suliman wrote:
> Add more examples of usage please.

Thank you very much for having a look. Did you see the examples at [1]? I don't want to add other examples to that page, it would become too long, but maybe I could add specific examples in the pages of the various modules. What do you think?

[1] https://lodo1995.github.io/experimental.xml/std/experimental/xml.html
August 24, 2016
On Wednesday, 24 August 2016 at 10:26:53 UTC, Lodovico Giaretta wrote:
> On Wednesday, 24 August 2016 at 10:22:04 UTC, Suliman wrote:
>> Add more examples of usage please.
>
> Thank you very much for having a look. Did you see the examples at [1]? I don't want to add other examples to that page, it would become too long, but maybe I could add specific examples in the pages of the various modules. What do you think?
>
> [1] https://lodo1995.github.io/experimental.xml/std/experimental/xml.html

IMHO is much better to attend every function with short example of it's usage. For example: https://lodo1995.github.io/experimental.xml/std/experimental/xml/parser.html it's hard to understand what it's doing.

Not every D-people are good programmers. A lot of people prefer to look at example to understand what function is doing. And if it's good just copy-past ready to use code.
August 24, 2016
On Wednesday, 24 August 2016 at 12:00:43 UTC, Suliman wrote:
> On Wednesday, 24 August 2016 at 10:26:53 UTC, Lodovico Giaretta wrote:
>> [...]
>
> IMHO is much better to attend every function with short example of it's usage. For example: https://lodo1995.github.io/experimental.xml/std/experimental/xml/parser.html it's hard to understand what it's doing.
>
> Not every D-people are good programmers. A lot of people prefer to look at example to understand what function is doing. And if it's good just copy-past ready to use code.

Understood, you are right. I'll work on this.
Thank you.
August 24, 2016
On Wed, 24 Aug 2016 12:00:43 +0000, Suliman wrote:

> On Wednesday, 24 August 2016 at 10:26:53 UTC, Lodovico Giaretta wrote:
>> On Wednesday, 24 August 2016 at 10:22:04 UTC, Suliman wrote:
>>> Add more examples of usage please.
>>
>> Thank you very much for having a look. Did you see the examples at [1]? I don't want to add other examples to that page, it would become too long, but maybe I could add specific examples in the pages of the various modules. What do you think?
>>
>> [1] https://lodo1995.github.io/experimental.xml/std/experimental/xml.html
> 
> IMHO is much better to attend every function with short example of it's usage. For example: https://lodo1995.github.io/experimental.xml/std/experimental/xml/
parser.html
> it's hard to understand what it's doing.
> 
> Not every D-people are good programmers.

I'd rather say, not everyone using D learns best from specifications plus lengthy examples. Short, pithy examples work better for some. It's also easier to ensure that you have good coverage that way.

For my part, I best learn the essentials from *short* examples and the details from prose. I can learn general usage from prose, but it takes me a fair bit longer for non-trivial things (especially when it makes heavy use of templates). I can learn details from examples, but it's much slower.

This isn't a lack of programming skill on my part. It's just, I'm a human, so I'm good at pattern matching.
August 25, 2016
On Wednesday, 24 August 2016 at 09:31:44 UTC, Lodovico Giaretta wrote:
> Hi!
>
> I'm pleased to announce that my GSoC project, a replacement for the outdated std.xml, is now a Phobos PR! [1] It is an (almost complete) mirror of my repository [2], which is also available on DUB [3].
>
> I would like to thank my mentor Robert burner Schadek for his great support and everybody who already gave some feedback during these months.
>
> The PR is not meant for immediate merging. Some things still need improvement (docs/unittests/...) while others will come in a second iteration (advanced DTD handling). It is meant to for some reviews, focusing mainly on the design and usability of the library.
>
> In the PR description you will find all the details, including a nice "wishlist" of things that I found missing in D during the development and some open questions.
>
> So, if you have any consideration/suggestion, drop a line here or on the PR, and if you find bugs, don't hesitate to file an issue on the issue tracker of my repository.
>
> Thank you very much!
>
> [1] https://github.com/dlang/phobos/pull/4741
> [2] https://github.com/lodo1995/experimental.xml
> [3] https://code.dlang.org/packages/std-experimental-xml

Looks good at first glance. How does it compare against established XML parsers performance-wise, e.g. Phobos XML, RapidXML, pugixml etc.

Tango claimed to be the fastest XML parser at some point in time, curious how it compares.

http://xmlbench.sourceforge.net/ might be a good start.
August 27, 2016
On Thursday, 25 August 2016 at 21:36:34 UTC, Lurker wrote:
> On Wednesday, 24 August 2016 at 09:31:44 UTC, Lodovico Giaretta wrote:
>> [...]
>
> Looks good at first glance. How does it compare against established XML parsers performance-wise, e.g. Phobos XML, RapidXML, pugixml etc.
>
> Tango claimed to be the fastest XML parser at some point in time, curious how it compares.
>
> http://xmlbench.sourceforge.net/ might be a good start.

Hi! Sorry for the late reply, I've been quite busy.

I didn't perform many comparisons against other APIs. Also, performance has not been the main target. I mean, the infrastructure for making it fast is there. The library contains a small number of string handling functions that can be optimized, leading to great speed improvements in all components. But these functions hasn't been fully optimized yet.

About raw performance, the repository contains a simple benchmarking driver which I use to track performance regressions in the code. On my laptop, excluding the time needed to load the input from disk, I can easily process XML with speeds over 50MB/s, which looks like a good start.

Easy win comparisons: this library is way faster than Java's built-in XML library and also way faster than the current Phobos std.xml API.

> http://xmlbench.sourceforge.net/ might be a good start.

Thank you for pointing this out. I will have a look.
August 28, 2016
On Wednesday, 24 August 2016 at 09:31:44 UTC, Lodovico Giaretta wrote:
> Hi!
>
> I'm pleased to announce that my GSoC project, a replacement for the outdated std.xml, is now a Phobos PR! [1] It is an (almost complete) mirror of my repository [2], which is also available on DUB [3].
>
> I would like to thank my mentor Robert burner Schadek for his great support and everybody who already gave some feedback during these months.
>
> The PR is not meant for immediate merging. Some things still need improvement (docs/unittests/...) while others will come in a second iteration (advanced DTD handling). It is meant to for some reviews, focusing mainly on the design and usability of the library.
>
> In the PR description you will find all the details, including a nice "wishlist" of things that I found missing in D during the development and some open questions.
>
> So, if you have any consideration/suggestion, drop a line here or on the PR, and if you find bugs, don't hesitate to file an issue on the issue tracker of my repository.
>
> Thank you very much!
>
> [1] https://github.com/dlang/phobos/pull/4741
> [2] https://github.com/lodo1995/experimental.xml
> [3] https://code.dlang.org/packages/std-experimental-xml

I like the new cursor API very much since it enables new use cases that are were hard to do with the old API. Thanks for your hard work!

Examples are a bit scares. I like the way Phobos documents every functions with an unittest/example. I'm all for that!

Another thing I encountered some days ago was that the default error handler is using asserts to signal error. https://github.com/lodo1995/experimental.xml/issues/30
It is not obvious from the API that you're required to have a error handler.
Two ideas:
Use exceptions instead of asserts. This way it is recoverable in the default use case.
Require a error handler in the constructor.
October 02, 2016
On Sunday, 28 August 2016 at 06:28:35 UTC, NVolcz wrote:
> On Wednesday, 24 August 2016 at 09:31:44 UTC, Lodovico Giaretta wrote:
>> Hi!
>>
>> I'm pleased to announce that my GSoC project, a replacement for the outdated std.xml, is now a Phobos PR! [1] It is an (almost complete) mirror of my repository [2], which is also available on DUB [3].
>>
>> I would like to thank my mentor Robert burner Schadek for his great support and everybody who already gave some feedback during these months.
>>
>> The PR is not meant for immediate merging. Some things still need improvement (docs/unittests/...) while others will come in a second iteration (advanced DTD handling). It is meant to for some reviews, focusing mainly on the design and usability of the library.
>>
>> In the PR description you will find all the details, including a nice "wishlist" of things that I found missing in D during the development and some open questions.
>>
>> So, if you have any consideration/suggestion, drop a line here or on the PR, and if you find bugs, don't hesitate to file an issue on the issue tracker of my repository.
>>
>> Thank you very much!
>>
>> [1] https://github.com/dlang/phobos/pull/4741
>> [2] https://github.com/lodo1995/experimental.xml
>> [3] https://code.dlang.org/packages/std-experimental-xml
>
> I like the new cursor API very much since it enables new use cases that are were hard to do with the old API. Thanks for your hard work!
>
> Examples are a bit scares. I like the way Phobos documents every functions with an unittest/example. I'm all for that!
>
> Another thing I encountered some days ago was that the default error handler is using asserts to signal error. https://github.com/lodo1995/experimental.xml/issues/30
> It is not obvious from the API that you're required to have a error handler.
> Two ideas:
> Use exceptions instead of asserts. This way it is recoverable in the default use case.
> Require a error handler in the constructor.

Examples still sucks. Hard to start use lib.