Boost.ScopeExit based on D's scope(exit)
Georg Wrede
georg.wrede at iki.fi
Wed Mar 4 01:20:40 PST 2009
Andrei Alexandrescu wrote:
> 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.
Thanks. I tried to locate the source in the dmd tree, but in vain.
So probably it should appear when rdmd is run with no arguments for
there to be any effect... :-)
> 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
Heh, had to actually use this one when I checked rdmd before posting.
Now i have dmd1 and dmd2 and obviously needed this.
> --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)
If foo.d is to be run like
$ ./foo.d
then rdmd has to be on the shebang line anyway. And if you run
$ rdmd foo.d
then you're already running rdmd. So, where do you use --shebang?
> Of particular interest are --eval and --loop. Very helpful :o).
Oh, these both are cool!
PS: are you using zsh? The examples on
http://www.digitalmars.com/d/2.0/rdmd.html have a percent prompt instead
of the dollar prompt. Zsh seems to be fading out, the faq
http://zsh.sourceforge.net/FAQ/zshfaq01.html is from 2005, and the last
Fedora doesn't even have zsh as an option.
More information about the Digitalmars-d-announce
mailing list