On Sat, 2008-12-20 at 02:19 +0100, Hans Vercammen wrote:
> On Fri, 2008-12-19 at 12:10 +0100, Jürg Billeter wrote:
> > 
> >       * `(owned)' cast replaces `#' reference transfer expression
> > 
> > Even less used, equally unintuitive. Example of new syntax:
> > 
> > string foo = (owned) bar;
> 
> I don't have a strong opinion on this since I don't really need it, but
> using a cast expression feels a bit wrong. Not sure if we want to keep
> the option open of having operator overloading, but what about something
> like:
> 
> string foo <= bar;
> or
> string foo << bar;

In my opinion, this is not a lot clearer than the # syntax. The idea is
to use a more descriptive syntax so that reading code gets easier. As it
shouldn't be used often, a few characters more to type should not be an
issue.

Furthermore, please note that it needs to be an expression, it can also
be used as a method argument, not just in assignments.

some_method (42, (owned) bar); 

> > 
> >       * `unowned' type modifier complements `weak' type modifier
> > 
> > `weak' only make sense for reference fields, list elements, and local
> > variables to break reference cycles. Vala will use
> > `g_object_add_weak_pointer' in these places in future versions.
> 
> I definitely agree we should avoid dangling pointers as much as
> possible. However, I fear a bit that many people will turn to using
> pointers when this is also applied to local variables.

Why do you think people will switch to pointers? Do you have an example
in mind where the change might cause issues?

> > In other places where `weak' is currently used such as method return
> > values or fields of non reference counted types, it has the meaning of
> > "no ownership transfer". This is mostly used in bindings but can also be
> > used in Vala code to fine-tune the ABI. In my opinion, `unowned' as
> > counterpart to `owned' fits better in those places.
> 
> It probably depends how you look at it. Personally, I tend to think in
> terms of shared and weak references. Owned and unowned seem to suggest
> an object can only be owned in one place.

I agree, however, owned and unowned are mainly used for non-reference
counted objects such as strings or GLists. They can really only be owned
in one place, and that's why I think it makes sense to use these names.
Users should be very careful about unowned references as they are really
unsafe.

Jürg


_______________________________________________
Vala-list mailing list
Vala-list@gnome.org
http://mail.gnome.org/mailman/listinfo/vala-list

Reply via email to