Ticket #41 (closed task: fixed)

Opened 1 year ago

Last modified 1 year ago

Switch from Phobos to Tango

Reported by: clayasaurus Assigned to: clayasaurus
Priority: major Milestone: 0.3
Component: unspecified Version: svn
Keywords: Cc: ChristianK

Description

Switch code from Phobos to Tango. Should we think about keeping phobos compatibility?

Change History

05/03/07 12:30:58 changed by ChristianK

  • version changed from 0.1 to svn.

I feel we should definitely keep Phobos compatibility, probably using tangobos. I hope it's no big problem.

05/22/07 16:48:41 changed by clayasaurus

Maybe support both tango and phobos with tangobos?

06/18/07 16:33:13 changed by clayasaurus

I think using tangobos will just annoy Tango folks. Still pondering if we should fully goto tango or not.

Also, when doing the conversion, I want to keep our own redblacktree and dlinkedlist templates /unless/ the tango ones are better and more bug free.

06/26/07 23:52:56 changed by clayasaurus

I think 100% tango is the way to go. With DSSS, tango should be easy to install prob by the time v.3 is out. Plus the Virtual File System feature will be nice.

07/17/07 18:46:09 changed by clayasaurus

Also... only switch to the tango version of RBTree (set) etc. if tango's version is faster, otherwise if not faster, try to get faster impl accepted into tango :)

07/17/07 19:15:42 changed by clayasaurus

Hrm... The other option...

Wait until after the D conference to see if phobos will become compatible with tango... then Arc can just use phobos and tango users can just use tango with arc.

07/20/07 01:28:21 changed by clayasaurus

  • owner changed from ChristianK to clayasaurus.

I actually want to do this job... to get some experience with Tango, and to give myself time to relax and think about good API design.

Also: http://www.dsource.org/projects/arclib/wiki/WhyUseTango

07/31/07 00:55:48 changed by clayasaurus

If we do switch to tango, I assume we will be able to replace

-> flexsignal -> signalobj -> signalencapsulation

with tango's signal?

http://www.dsource.org/projects/tango/docs/current/tango.core.Signal.html

Or, if that's not enough, which signal template are we going to standardize on?

07/31/07 03:30:54 changed by ChristianK

  • cc set to ChristianK.

Signalobj and signalencapsulation are both currently unused, as far as I am aware; we should probably get rid of them (also for 0.2), to not confuse our users - I simply forgot they were there.

flexsignal vs. Tango Signal:

  • mixin <-> struct (no big deal)
  • function signatures can just be compatible <-> signatures must match exactly
  • weak ptr behaviour <-> no weak ptr behaviour
  • no statement about connecting/disconnecting in slot <-> con/discon in slot is ok

The Tango signal documentation claims that the weak pointer behaviour would be inherently unsafe. I'm not sure what they mean.

07/31/07 15:54:47 changed by clayasaurus

So far I've identified 3 areas that will be more difficult to port to tango than normal.

  1. Sound System - Use of std.mmfile. I assume tango's tango.io.MappedBuffer? will do the job
  2. XML System - Use of std.stream w/ no real tango equiv.
  3. Serialization System - Use of std.stream w/ no real tango equiv.

Everything else will be pretty straight forward, I think.

08/09/07 15:02:57 changed by ChristianK

I ported everything but XML, GUI, serialization and sprite. I did it by removing all std. includes and resolving errors from there. The subsystems I noted are currently excluded from compilation in dsss.conf. With this setup, arc compiles again and several of the unittest work, too.

This was simpler than I expected. The only thing that was making trouble was (as you expected) the mmfile in the arc.sound. I circumvented the problem a bit by using the full slice of the MappedBuffer. (it seems to always map the whole file anyway)

09/06/07 11:43:38 changed by clayasaurus

  • status changed from new to closed.
  • resolution set to fixed.

Done