Boost.ScopeExit based on D's scope(exit)

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Tue Mar 3 13:10:39 PST 2009


Georg Wrede wrote:
> Andrei Alexandrescu wrote:
>> Leandro Lucarella wrote:
>>> Andrei Alexandrescu, el  2 de marzo a las 10:42 me escribiste:
>>>> Leandro Lucarella wrote:
>>>>> Boost 1.38.0 includes a new library ScopeExit:
>>>>> http://www.boost.org/users/news/version_1_38_0
>>>>> This library is based on D's scope(exit) according to the 
>>>>> documentation,
>>>>> see at the end of the link:
>>>>> http://www.boost.org/doc/libs/1_38_0/libs/scope_exit/doc/html/scope_exit/alternatives.html 
>>>>>
>>>> Cool. I confess I'm mildly miffed. In the "Acknowledge" section 
>>>> (sic) yours truly is being acknowledged "for pointing me to 
>>>> scope(exit) construct of the D  programming language." In the 
>>>> Alternatives section there's an unatrributed link to the ScopeGuard 
>>>> article. My understanding of ScopeExit looks much more inspired and 
>>>> derivative from ScopeGuard than a distinct artifact, something that 
>>>> goes entirely unacknowledged.
>>>>
>>>> For some reason ScopeGuard and scope(exit) consistently escapes 
>>>> proper acknowledgments. Petru Marginean and I introduced the concept 
>>>> in C++ and argued for its usefulness. I invented the gorram 
>>>> scope(exit) statement for D, and Walter almost forgot to acknowledge 
>>>> me. And now this. What are you going to do...
>>>
>>> Is there any particular reason why you are so concerned about 
>>> credits? I'm not saying they don't matter, but you seem to take it 
>>> too hard.
>>
>> I'm, if anything, at the very low end of credit-beggars foodchain. You 
>> wouldn't believe if I told you about some (rather notorious within the 
>> community) people I know that ought to be a tad more modest :o). I 
>> just have a dim view of not giving credit. Proper credit is extremely 
>> easy to give, costs nothing, and is the right thing to do. The author 
>> of ScopeExit clearly knew everything of ScopeGuard since he linked to 
>> it, but did not quite acknowledge the relationship of his work to 
>> ScopeGuard, which should be done even assuming he developed ScopeExit 
>> entirely in isolation. That's just... you don't do that.
> 
> I'm at the low end too. For example, rdmd is based on my original idea. 
> But by not begging around for acknowledgements, I bet nobody at all 
> knows it anymore.
> 
> Many years ago I sent a private mail to Walter with the idea, six months 
> later I started advocating it vigorously on this NG, later I mailed a 
> shell script to him that does what rdmd does now.
> 
> The whole concept is mine, right down to shebangs in D source files and 
> caching binaries.
> 
> Heh, so incidentally, there might be some point in activating myself in 
> that area. Also outside of the D community.... :-(
> 
> The biggest lie I've ever heard is "the meek shall inherit the earth".

I had no idea. Good you told me, I've put an ack in the source file.

By the way, I added a couple more flags:

Usage: rdmd [RDMD AND DMD OPTIONS]... program [PROGRAM OPTIONS]...
Builds (with dependents) and runs a D program.
Example: rdmd -release myprog --myprogparm 5

Any option to be passed to dmd must occur before the program name. In 
addition
to dmd options, rdmd recognizes the following options:
   --build-only      just build the executable, don't run it
   --chatty          write dmd commands to stdout before executing them
   --compiler=comp   use the specified compiler (e.g. gdmd) instead of dmd
   --dry-run         do not compile, just show what commands would be run
                       (implies --chatty)
   --force           force a rebuild even if apparently not necessary
   --eval=code       evaluate code a la perl -e
   --loop            assume "foreach (line; stdin.byLine()) { ... }" for 
eval
   --help            this message
   --man             open web browser on manual page
   --shebang         rdmd is in a shebang line (put as first argument)

Of particular interest are --eval and --loop. Very helpful :o).


Andrei


More information about the Digitalmars-d-announce mailing list