Interesting. I wonder, does Vala mention in their notes for new releases on
the web site if they are updating a specific vapi file? How could I go
about finding out what version of clutter (for instance) that Vala's
release of the clutter vapi file supports? Is it in the name of the vapi
file (something like clutter-1.8-vapi)? If not, would looking for a file
modification date that I can compare to clutter release dates make sense.
It would be nice to know up front what version of a specific library my
default Vala vapi supports. At some point I guess I'll have to start
understanding how vapi files work but for now I have enough to do just
getting up to speed on Vala and Clutter, which by the way is the most fun I
have had programming in quite some time.

thnx

Brian

On Fri, Jan 13, 2012 at 3:50 PM, Evan Nemerson <e...@coeus-group.com> wrote:

> On Fri, 2012-01-13 at 17:46 +0000, Emmanuele Bassi wrote:
> > On 2012-01-13 at 09:32, Brian Duffy wrote:
> > > Maybe I'm wrong but I was going on the assumption that the vapi
> authors are
> > > not basing their version numbers on "minor" releases such as
> clutter-1.8 or
> > > clutter-gst-1.4 or whatever. For instance, when  include the clutter
> > > package in my application I am using --pkg clutter-1.0 even though I am
> > > using the clutter-1.8 that F16 has available through yum.
> >
> > that's because the "1.0" fragment of the "clutter-1.0" pkg-config name
> > (which is what Vala uses to find the library compiler and linker flags
> > when you use the --pkg command line argument) is the API version, not
> > the Clutter version.
> >
> > Clutter 1.8 still allows you to use the API of every other release of
> > the 1.x series, as it's API and ABI compatible.
> >
> > > I would be interested if anyone can clarify what the deal is here. I
> would
> > > hate to think that Vala is only providing functionality that has
> existed in
> > > clutter since 1.0 or Clutter-gst since 1.0. I can't believe that is the
> > > case.
> >
> > it's exactly the case, but it's probably not what you meant. any
> > function at the time 1.0 was released is still available in Clutter 1.8;
> > if you need a specific version of Clutter you'll have to check the
> > version using pkg-config at configure time.
>
> No it isn't. I think you missed the word "only". Vala isn't /only/
> providing functionality that has existed in Clutter since 1.0, it is
> providing all the functionality that the library (or libraries)
> referenced by that pkg-config file provide up until the last time the
> VAPI was updated.
>
> > Clutter itself has two ways for checking at compile time and run time
> > what version is being used:
>
> It's also worth noting that, AFAIK, most people just use pkg-config to
> test against a minimum required version using the PKG_CHECK_MODULES
> macro.
>
> >   • the CLUTTER_CHECK_VERSION() macro, which can be used to delimit a
> >   section in the C code, e.g.:
> >
> >     #if CLUTTER_CHECK_VERSION(1, 8, 0)
> >       clutter_object_method_added_in_1_8_0 (foo);
> >     #else
> >       clutter_object_method_available_before (foo);
> >       clutter_object_method_that_may_have_been_deprecated_later (bar);
> >     #endif
> >
> >   • the clutter_check_version() function, which can be used to check
> >   the version of the Clutter library that is *currently* running the
> >   application, e.g.:
> >
> >     if (clutter_check_version (1, 8, 0))
> >       clutter_object_method (arg);
> >     else
> >       clutter_object_another_method (another_arg);
> >
> > this obviously applies to the C API; if you need to use a method or a
> > class and the vapi file doesn't list them, then you'll have to update
> > the vapi file and either depend on a new version of Vala that ships that
> > updated vapi, or ship the updated vapi file yourself.
>
> You can also use the extern keyword to create a binding in your Vala
> code. It's a bit hackish, but not usually a problem if you're just
> missing a method or two.
>
> > yes, that's a problem of Vala, and the fact that all vapi files are
> > centralized with Vala, instead of living outside of the project.
>
> We don't have a problem with upstream libraries distributing their own
> VAPIs. In fact, I rather prefer the idea... examples of this include
> (according to share/vala/vapi in my jhbuild environment):
>
>      * atasmart
>      * champlain
>      * colord
>      * dconf
>      * folks
>      * gee
>      * gssdp
>      * gtk-vnc
>      * gupnp
>      * libcanberra
>      * libosinfo
>      * libproxy
>      * libvirt
>      * rygel
>      * spice
>      * telepathy
>      * tracker
>
> That said, many projects aren't going to want to deal with Vala because
> of the additional maintenance cost, a lack of familiarity with Vala,
> apathy, etc.
>
> If Clutter would like to build and distribute its own VAPI I certainly
> wouldn't have any objection, and I don't think anyone else would either.
> I would even be willing to help maintain the bindings.
>
> That offer goes for everyone, not just Clutter or even GNOME. If you
> would prefer to distribute a VAPI with your project I would be happy to
> help integrate the bindings into your build system and assist with
> maintenance. After all, it's not really any more work for me to maintain
> bindings upstream than in Vala.
>
> If you don't want to distribute a VAPI with your project, just recognize
> that we may forget to update our VAPI, especially for less popular
> packages. Feel free to file a bug report at [1], or even just ask on IRC
> (my nick is nemequ on gimpnet and freenode). Also, keep in mind that
> Vala follows the GNOME release schedule; a new stable branch is only
> released every six months, and distributions don't tend to package
> unstable releases.
>
>
> -Evan
>
> [1] https://bugzilla.gnome.org/browse.cgi?product=vala
>
> _______________________________________________
> vala-list mailing list
> vala-list@gnome.org
> http://mail.gnome.org/mailman/listinfo/vala-list
>



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

Reply via email to