On 15/12/2011 00:32, Jakob Bornecrantz wrote:
On Wednesday, 14 December 2011 at 18:55:23 UTC, Walter Bright wrote:
On 12/14/2011 10:28 AM, Jakob Bornecrantz wrote:
I don't know where the D1 community is, or even if it exists anymore.
I'm here!
Thanks for speaking up.
np.
Anyways couldn't you just do releases less often or only when there
is something to release? Like every other D2 release to
lessen the burden?
Can I turn that around and ask what issues there are with migrating
your code base to D2?
In short it can be answered with the questions "Can you
guarantee it work?" and "Can I justify the amount of work I have
to put in for the gain?", the thing is I have a had a lot of
problems with D1 toolchain, I have fixed or worked around these
issues and I'm wondering if I have to work around those or other
again. I am currently supporting 3 platforms (Mac, Linux &
Windows), so that factors in as well (me having fixed some
issues on Mac for D1).
My current code base is 40Kloc's where about 8Kloc of those
are library bindings, on top of that it also includes a couple
of C projects sources (expat, lua and some other misc
libraries). So I would have to convert all that code to D2 and
also fix any issues that might arise from that conversion.
That said I think that it would mostly running the code
through dmd2 and just fix any cases where it complains. But it
probably wouldn't be a trivial amount of work.
Having migrated a far smaller codebase from D1/Tango to D2/Phobos, here
are some tips/things I encountered:
* Most of the effort in porting was dealing with the lack of features in
phobos, this sounds like it wouldn't be an issue for you though since
you're using D1/Phobos.
* Make sure all your code is thoroughly unittested - my code had a
reasonable amount of unittests, but I was still discovering subtle bugs
months later that were caused by the transition
* Do it all in one go, and DO NOT GET DISTRACTED. The moment you start
trying to clean up code as well as finish porting it you introduce lots
of issues
* Some things will inevitably have to change to get them working...
Don't make the changes while you're porting, just drop in a /* TODO:
<This needs to work like X, not Y> */ comment and come back to it later.
Get it compiling first, then go through and sort things out later.
Hope this helps, should you decide to transition :)
--
Robert
http://octarineparrot.com/