WWDC2000 Session 123
Transcript
Kind: captions
Language: en
in this session I'm going to do a quick
review of what carbon is and why it's
important we're going to go more into
detail about the transition process and
what it takes to get your application
carbonized and then we'll talk about
some of the development options that you
faced with tools and platforms and
debugging so what is carbon we'll simply
put its API that you can write to in the
mac OS toolbox so that your application
will run on the eight one through ten if
scott forstall pointed out on monday
carbon is a living organism as Apple is
reviewing the api's developer feedback
is very important and it has made a
severe impact severe that sounds bad a
great impact on some of the decisions
that Apple has made about whether to
keep or remove api's some api's are have
to be removed because they just simply
wouldn't work in a modern operating
system environment and some because our
evaluation of how much they're being
used would indicate that we should no
longer support it but developer feedback
is often made an impact on those
decisions so this mailing list is self
subscribe and if you go ahead and add
yourself to that and begin discussing
with other developers and Apple
employees there on this mailing list
your feedback will definitely be
incorporated so why carbon well I think
before we talk about why carbon we have
to review why Mac os10 and if Scott also
pointed out on Monday Mac os10 is
bringing a lot to the mac OS platform
but simply isn't there enough with mac
OS 8 and 9 right now and those things
are stability because of protected
memory performance and responsiveness
because of pre-emptive multitasking aqua
which is just an amazing user experience
you've all seen that a virtually
unlimited memory no more finder panels
and we're having to close your app open
the panel guess the right number and
relaunch your app an application
packaging which is delivering multiple
languages without having to install a
different version of the app or a
different version of the OS and simple
I'll incorporated into a folder but to
the user it looks like one finder item
so now back to why carbon
all those great things are coming to us
because of Mac OS 10 but all the
applications that the users are using
for productivity are on 89 and that's
where carbon comes into play carbon is
Apple's answer to how we're going to
incorporate these two great environments
Mac OS eight and nine applications which
are so many and Mac OS 10 bringing the
modern operating system environment
gives us a great user experience on a
robust platform so the transition
process it's pretty straightforward I
actually prefer to call it a tune-up
process I was reviewing some of the
documentation we have and I like this
term better because I think it's more
accurate tuneup is a you know kind of
getting in shape just parts of your app
that need to be changed a little bit to
work better in a modern operating system
environment like Mac os10 so the first
thing you're going to want to do is use
carbon dater I'm going to go into all of
this in more detail that I just wanted
to give an overview of the process
carbon data is a tool that Apple has
made so that you can preview required
changes that are going to be coming to
your application before you really start
a lot of the work then you're going to
want to download the carbon live SDK
which has pretty much everything you'll
need to get going and then you start the
tune up whoa here we go fixing compiler
errors using alternative or modified
api's for those that are no longer
supported and you're going to link
against carbon step then you're going to
run on mac OS 9 which is cool but as my
car sia from Cork said on Monday when
you run on mac OS 10 it's really fun it
really is so carbon data like I said
allows you to preview require changes
it's very simple you download a tool you
drag your app onto it carbon date or
spit out a file you mail that to Apple
at an email address that's specified in
the documentation and in about an hour
you get back an HTML report that gives
you a detail of the api's you're using
that our unsupported or modified so this
was mine I came into developer relations
last summer and before that I was
working on a project in engineering I
don't know if any of you have had the
chance to see a new Macintosh boot
in the past nine months but it starts
playing a flashy movie and then allows
the user to register and get an internet
account have any of you seen that I
don't know yeah okay cool that was my
engineering project I was working on the
user experience side another great guy
was working on the backend the internet
and registration side so uh anyway when
I was coming developer relations I
wanted to get a really good feel for the
experience of developers were having so
I emailed the application to carbon
dater and this was a sample of the
report that came back so as you can see
ninety percent of the api's that i was
using were just supported that's
actually a low number I think it's
because I was a system software engineer
so we use API is that I don't know
aren't always supported or at least
publicly available so your application
will probably report a much higher
number for supported api's eight percent
were unsupported and a small percentage
or either modified or not recommended
which means in a while they would be
unsupported so after you kind of get a
feel for the changes that are going to
be made go ahead and download the carbon
live SDK the contents of it are the
carbon porting guide really the carbon
porting guide is going to be your major
guide through this whole process it's a
much deeper in-depth discussion of the
kind of stuff I'm talking about today
you'll get the latest universal
interfaces which you'll need to keep up
with the api's that are constantly being
reviewed and set for carbon a lot of the
api's are still being reviewed as to
whether we will permanently support them
and then you're going to link against to
one of two stubs and I'll explain the
difference between those in a few
minutes there's the carbon live
extension so that you can run your
software on mac OS 8 or 9 documentation
and sample code so with this stuff
you're all set you're ready to go there
are currently two SDKs for carbon live
shipping carbon live 104 has gone GM and
is available via download from apple
software update mechanism and it's
available on our developer site on the
public area development kits and carbon
live 11 is currently under development
and being seated about every two weeks
and you can get that from your Apple
Developer connection
count once you login just click download
software and go to the carbon lives
section and the carbon leg 11 s2k will
be there for carbon lives I'm actually
going to be going into depth about that
much more tomorrow Thursday in the Civic
Center at five so if you want to learn
more about carbon live in carbon on mac
OS 8 & 9 please be sure to attend that
session so the very very first step
about carbonizing your application has
to do a 68 k code there's just none so
there's no 68k code involved with mac OS
10 or carbon applications and that's all
I got to say about that so so the next
step once you're there ready you're
ready you're set go you waive this big
flag target API Mac carbon so I got to
say that in the first you're going to
hate this flag because if I could say
that Universal interface has had a mood
when you turn this flag on they get
really fussy and when you go to rebuild
your application it's just going to
start raining compiler errors so perhaps
many of you have already experienced
this but the good news is that they're
so easy to fix I got to be honest
they're so tedious but ending on the
good note they're so easy so it's just a
lot of grunt work and in some kitchens
that we had during the past nine months
I've seen developers show up with just
you know agony as they see the number of
compiler errors coming in they projected
like two weeks you know which the
kitchen was only running a week and we
just thought alright well go for it and
call me when it's up on ten or whatever
I don't know but two days later you know
they were all done so it goes a lot
faster than most people think so what
are these compiler errors well scott
forstall referred to them on monday most
of them are coming from the fact that
we've made the toolbox data structures
opaque we've kind of kicked you guys out
of touching them directly but that's
such a good thing because now Apple can
keep moving the OS forward and not break
your applications every time we have to
change something in there it also allows
us to add re-entrance e to the toolbox
for thread safety the other type of air
is the generic universal proc pointers
are no longer supported each tool box
manager now has specifically typed upp s
so to take a deeper look at some of
those graph ports and friends are the
most common errors that you'll see a mac
OS 9 a dialogue is a window is a graph
planner and we all know that we're so
used to casting those and using them as
such but I'll Mac os10 they are not and
therefore carbon they're not so in order
to do that you need to use casting
functions and these are a sample of a
lot of the casting functions or even
just access or functions are available
in Universal interfaces if you want to
get the field from a record the
convention is get record field so get
window port or get dialog window for a
specific real objects not just a field
of an object but of ports and windows
you can if you have that you can get the
containing record by using the
convention get window from port or get
dialogue from window so these
conventions are followed throughout
these universal interfaces when you're
looking for that access or function keep
this in mind so there's an example in
the top line we see what we've all been
using today we want to get the left
field of a bounding box of a region and
so we just dereference the region and
access to field directly but in carbon
you can see what it becomes you have to
use the access or get region bound and
passed it a variable in which it's going
to fill out the wrecked with the value
of the bound it also returns a pointer
to your variable just so you can then
immediately start accessing it and as
you can see there so there is some good
news I don't know why I think I was
tired when i wrote this slide with
there's good news Rex are not opaque ok
so I just can't even imagine the number
of compiler errors that we were
beginning if we had made Rex opaque so I
know all right Universal proc pointers
why do we still have them well as you
know they came into being when we
started having to kind of run time
architectures powerpc and 68 k and we
still do with mac OS 10 we have a CFM
which is familiar to all of us with Mac
us 89 but when we brought in the OS that
Mac OS 10 is built on mocco was its
native runtime a native runtime and we
still support those two run times so
universal proc pointers are there to
help us but the generic routines new
routine descriptor and disposed routine
descriptor are gone and you have to use
specific ones from the toolbox manager
so here's an example as you can see in
the top one we're using a new routine
descriptor and disposed routine
descriptor but now if you were to look
in the universal interfaces you'd see
these api's new control action upp and
dispose control action upp that's an
example of a specifically type of access
or upp function that you need to use
from a toolbox manager so one important
thing that I wanted to be honest about
is that carbon data does not necessarily
report these types of compiler errors so
I had one developer come up to me and
today carbonator said I only had to
change 8ap eyes and I was like oh
because when he turned on the flag he of
course started getting these other types
of compiler errors that are involved
with carbonizing your applications so so
now we're going to kind of go down the
road that we've all been traveling to
get a mac OS 8 or 9 application on board
we're going to see that some of the
roads are closed and we have detours and
i'm just going to review some of the
highlights once that i have seen
specifically impact developers in the
past year again use your carbon porting
guide for an in-depth coverage of pretty
much all of the gotchas that we know
about at this time the biggest one that
I've seen hit people is that the window
manager port is no longer supported so
you cannot draw globally to the screen
we do have some detours for window
dragging and resizing carbon events is
supported you as carbon events ends your
window handler messages you can go ahead
and grab the event modify some
parameters in the system will begin
respecting those so if you wanted to
snap drag the window or do constrained
resizing I go ahead and use carbon
events for other types of specific drag
the drag manager
meet your needs we really do want you to
send us feedback though if your apps
using the window manager port in a way
that we're not providing a workaround
for at this time in our analysis of the
way that developers have been using the
window manager port we don't see a
compelling need to re-enable that type
of user interface capability or
mechanism for you so far the cases that
we have seen do not fall within the
Macintosh human interface guidelines and
there are an alternative to those cases
that we've seen so we're not going to be
providing a generic workaround for this
mechanism again if you want to give us
you back join that mailing list and just
send it there the trap manager so
patching is completely unsupported
within carbon and Mac OS 10 and it's
works against ability and it was 68 k
specific so the new message is that
carbon events within an application is
providing a great way to modify the
behavior of the system in a very
sanctioned easy way and for other things
we're providing hooks within the AP is
that we're not there before so the
message is that if you were using
patching for something actually on the
mailing list or to me please just send
the highest level goal that you've been
trying to achieve with patching and
we'll see if we can go ahead and
incorporate a sanctioned official api's
within the OS that you can use to get
that going because generic patching is
no longer supported help Apple guide
manager is unsupported and balloon
health is unsupported so you may find
these things just automatically being
respected on Mac OS 8 and 9 because
those technologies are still there but
on Mac OS 10 they're not so the
alternative is to use Apple help viewer
instead and choose Apple help tags one
thing to note is that Apple healthier
was not brought back to mac OS 81 in
carbon live and so you have to launch
your HTML help in a browser printing
there's a new printing architecture in
carbon but the api's are so similar that
it's almost a one for one copy of a name
change for your transition so
pretty it's really easy game sprockets
I'm just going to touch on this there
are sessions about gaming in this
conference so but draw sprockets are
going to be supported post ep 4 so
they're not there yet input sprockets on
Mac OS 10 the hidden manager is
replacing this and will be available to
carbon applications for api's you don't
have to go down into the Mokka layer and
access of api is on 10 nets rockets
we've open sourced so if you still want
to continue using the functionality of
nets rocket you can go get the source
code and incorporate that directly into
your application and a Mac os10 sound
sprocket is being replaced by core audio
I think the input sprocket and sound
sprocket sessions are still coming
within the week so be sure to attend
those abuse affects you networking open
transport has changed slightly so Mac
TCP is not supported within carbon and
open transport basic changes that when
you initialize open transport at the
beginning of your application you now
get back a context rest and now you just
start passing that context dress is the
first parameter to open transport api's
now it's pretty much the gist of the
change so it's very easy and appletalk
api's are not available in the carbon
API set so if you are using those you
should move over to open transport what
the stacks are still there the
technology providing that type of
networking is still on 8 9 and 10 and if
you wanted to go ahead and access those
appletalk api's on 10 they are actually
available in the appletalk framework on
10 they're just not made available
through the carbon API layer 2 carbon
applications this has been said many
times but threads in carbon are going to
remain cooperative if you've been using
thread manager threads if you want
pre-emptive threads go ahead and use the
multiprocessing api and many people ask
what about P threads so it's important
to know that carbon MP threads are
pretty much sorry MP throws are pretty
much P threads on Mac os10 and Pete Rose
so plugins in carbon on plugins must be
carbonized to work with your carbon
application on 10 on Mac OS 8 and 9 a
carbon application can load and run a
non carbonized plugin because the code
fragments are prepared separately but on
10 of course all software must be
carbonized other a lot of common memory
management architectures use zones for
handling the memory of their plugins on
89 that's still available so that'll
work but zones are not a concept on Mac
OS 10 and so that type of memory
architecture would not work for plugins
on Mac OS 10 CF plug-in and CF bundle
are two classes that we're providing
within the core foundation a new set of
API is available to carbon developers
and those sessions are coming right
after this and starting this afternoon
these are actually talked about in the
advanced session of core foundations who
have this affects you I encourage you to
go to those sessions so not all ap is
that control stuff on Mac OS 8 or 9 or
mac OS 10 can be brought up to the
carbon layer through one API and that's
mostly because of the nature of the
api's they just simply behave
differently on Mac OS 8 or 9 and Mac OS
10 and accomplishing these purposes is
not the most pleasant thing for carbon
developers so before we go in till we
provided you this pretty picture of a
fork in the road because that's we're
about to be we're about to fork in the
road so I let this picture in and get in
a good mood so we'll talk about this as
I said not all api's can be brought up
to carbon applications at that time you
have to begin and branch and use OS
specific api's so the basic way that you
do that is you factor all of your code
that is carbonized up into your
application in fact all of your code
that will either run on eight or nine or
on ten down into shared libraries and
then you load those as a pro as a
plug-in when you're running on the
relevant platform the two biggest ones
well the first one is hardware
interfaces hardware access is simply OS
specific and therefore it's not part of
carbon the scuzzy manager will be
partially supported that's mostly to
support scanners
and so for other hardware devices on Mac
OS 8 and 9 you'll continue using the
device manager the comms toolbox and on
Mac OS 10 you'll use io kit for shared
memory on Mac let's eight or nine you'll
continue to use your current mechanism
for our you're doing shared memory new
pointers this is a common one also
attaching to a shared library that has a
global data section is another one and
that will work on eight and nine but not
on 10 for Mac OS 10 you have to use the
POSIX api's again these api's could not
be brought up to the carbon applications
with one single it works all the time
api because the nature of shared memory
on the two systems is somewhat different
on Mac OS 10 you'll need to use the
positive shared memory is and the
semaphores for controlling access to
those so enough with downsizing I've
been talking about all these api's we've
taken away or they've modified and as
the good news is that carbon is also
bringing a lot of new technology to you
I'm just going to touch on some
highlights their sessions devoted to
each of these new things carbon events
was yesterday it's an amazing technology
that dispatches events directly to your
controls and windows within an
application completely takes care of a
lot of the default functionality that
you had to just cut and paste a lot of
code in just to get your app to keep
doing what it already is doing today
that's all been put into the system and
default functionality is available it's
really easy to override the system
handlers you can just stack your own on
top of it and override functionality or
if you don't want to override specific
functionality just keep calling down
into the stack and the system handler
will take care of that and there are
many more features that make development
easier timers are one that stand out as
one of the greatest things about it that
I make your development easier for idle
processing an important thing to note
about carbon events is that it's not
required to port your app to carbon so a
lot of people are concerned about that
you wouldn't have to do anything with
carbon events to get your application as
it is over to Mac os10 or carbon however
a lot of the new technologies that are
being introduced like sheets
some printing stuff those are beginning
to only be available through carbon
events but the good news is that it's
all gradual adoption you can install a
handler you could install one handler
and keep doing everything else via the
weight next event ed voz had gone into
that in detail yesterday in the carbon
event sessions corefoundation is a set
of AP is that were factored down out of
the frameworks that we had adopted with
mac OS 10 original OS from next and now
made available to carbon applications in
its own framework and it has a lot of
services that are good to use Unicode
strings for easier localization is
available collections arrays and
dictionaries things we all reimplement
or get from a framework today
preferences management there's a class
that helps you manage your preferences
in via carbon so that they just work on
eight nine or ten XML parsing URLs and
plugins support and another class that
I'm not mentioning here is application
packaging the new folder hierarchy and
lay out there was a class called CF
bundle that acts on your behalf is an
abstraction layer to all of the
resources and locations of stuff that
you've put in your application package
and I pretty much CF bundle and the
Preferences management class I would go
as far as to say that those are kind of
required concepts for a carbon
application to work well in both
environments should just simply need to
use those or else when Apple goes to
make some change in the future and
you're hard coding knowledge when we've
provided these abstraction layers you
would break so be sure to learn about
those and the data browser the long
awaited data browser this is a system
control for list views it supports the
browser column view and hierarchical
list view and it's used by many system
applications including the finder I
think file-sharing Sherlock and now
services so there's also a session about
that so I'm pointing to these the core
foundation basics and advanced sessions
are listed here and also the data
browser session so if you're interested
in any of those technologies please be
sure to attend
so with carbon the use of link have been
a link against a bunch of stub libraries
but with carbon there's just one and its
carbon stub to no longer interface live
appearance live quicktime live one sub
library on the CD that you receive this
week
nine in a carpet of em if any of you
have been already using carbon live SDK
this is the replacement the carbon live
of library and the region that we did
this because at this time carbon live
feeds our little behind on some EP is
the main with carbon events so the api's
for carbon a Mac os10 are a little
further along and a lot of developers
were wanting to get right away so if
you're going to use carbon events you go
ahead and use carbon sub 10 link against
it and run your application on 10 if
you're in on nine you would get linkers
but if you want to just keep right now
developing online go ahead and use
carbon step 9 and be you can go ahead
and use the carbon events api's they're
pretty much going to just be name
changes only so let's talk about
development options you have a couple
decisions using you as you proceed into
all of the carbon work there are two
right times that you'll need to consider
and think about tools and bugging
techniques the first decision is CFM
versus ma co so there are pros and cons
to each CFM you will get to have a
little executable that will run on mac
OS 8 9 10 9 also plugin architectures of
it just it will probably just work the
drawback CFM is that you have limited
access to Mac os10 native services such
as the ones I already talked about and
that's when you have to begin doing the
factoring your shared libraries and
loading them as plugins for Makka if you
were a macho applica carbon macco
application running a mac OS 10 these
guys available and just be available to
your application you don't have to do
the factor and load the plug-in but you
would be leaving necklace 89 pine
because that runtime is not available on
those platforms so those are things to
think about as you go ahead and decide
what you're going to do for your carbon
application delivery development tools
so Apple has just this week announced
our new project builder and interface
builder has been there these are
advanced tools
for kind of a next generation experience
of developing your application they all
and they do support carbon targets a lot
of news is coming out this week about
these tools can do and everything so I'm
going to touch on these and recommend
you go to those because they're just
reporting a lot of changes and updates
that they're making speaking future
functionality of the same thing to
support and of course miss Burge
development tools codewarrior and power
plant our support carbon at five on 2.1
and where your pro 6 is the release
going on right now code we will five
also carving development pretty well
let's see so step one is usually you
call your compiler changes you modify
API and you want to bring up the app
usually developers go ahead and try
starting it up on Twitter night with
carbon life they get to see on the flat
one platform and just keep fixing bugs
there until it's going and then they
usually switch and start bringing it
over to Mac os10 and I'm starting to
like guess a number of things up in the
kitchens when developers finished
carbonizing applications on eight and
nine now they kind of get the deer with
that life's look when we say well why
don't you try to bring it up on ten
because I just I don't know it's and
I've i would say that we regularly
things about three to seven hips that's
what i call them we try to wrap up on
ten bugs a distance of one eight or nine
the good news is that as for tron and
scott alluded to earlier this week
carbon on a quest 10 is developer
complete and by that we mean it's a very
stable environment providing almost all
functionality that you need carbonate
your applications more and more now when
developers are being their application
up on 10 the hiccups that i was talking
about are actually in your code instead
of ours which was not the case at the
beginning the most common one of course
is memory access so you will not believe
how many writing two nulls have been
existing in your applications
a 29 all this time until you run it on
10 so the other alternative is to do all
development on Mac os10 I'm project
builder and interface builder or native
tools to 10 the performance tools for ma
co are excellent and gdb the natives
bugger mac OS 10 provides a you buy
through project builder for this legging
experience so like I said the tools
experience is changing a lot even this
week as the developers are making their
announcements in the past right now the
common experience has been that we bring
your application / 10 you've had to do
two min debug you have your 8 & 9
machine you move up over to 10 code
warriors debugger would talk over the
network to Gd and GP would feedback
information and you'd pretty much to
have your code war experience however
because of this a lot of times when the
app crashed on 10 codewarrior would not
really be able to come through and
report the errors that you were seeing
and then you'd have to move over to the
10 box launch your application with gdb
see where it crashed and get a back
trace and that's actually a very
reliable way to find out at least where
your application is crap crashing and
then after that developers would usually
then go back to the 89 machine and step
towards that place where they know their
app was crashing so that they could view
the variables and parameters in
codewarrior because gdb again a lot of
announcements are being made this week
but at that time gdb could not show you
the values of variables and parameters
for a CFM application built with
codewarrior so that that was kind of why
that process is existing but again a lot
of this is changing so a bonus of
getting your application over to Mac OS
10 is that our experience from
developers and that they're finding bugs
faster like I said memory exception or
the main 1i have a true story friend of
mine works at a company and they had a
contractor on board doing they have a
contractor on board doing their carbon
work and he kept saying to them you
should get your application on 10 as
soon as possible
you know well of course we should so but
he knew what he was talking about he
knew the benefit that would come so
after a while they got it up on 10 and
they kind of started realizing wow Mac
os10 reveals a lot of stuff a lot faster
than mac OS 8 or 9 did and they
typically were looking for this one bug
it was a memory bug and I think that
they were anticipating you know how like
after while you to start getting a feel
for how much time you know that you're
going to be spending on this bug and
their estimate was two hours and you
know the contractor reminded them try it
on 10 I think they found in 15 minutes
so again you know getting your
application on 210 as soon as possible
we'll start a lot of time saving for
this and make your 89 code a lot more
robust too so the tool sessions this
week the first one already occurred so
I'm just pointing it out to let you know
and I hope you were able to make it to
that to hear the announcements right
after this is a session called
transitioning to the new project builder
because you're in this room you're
missing the first one which is
introduction to project builder the my
understanding is that this session is
actually targeted towards developers who
are used to the code warrior experience
and want to understand project or better
and then last week I cannot stress
enough session 96 debugging your
applications on the West End do not miss
session so the car porting I desire
carbon live is there in your application
of 18 and 9 has been there the part
where we've most had to help developers
with kind of just hand holding attention
is getting their app up on 10 it's where
they hit the hiccups and it's where you
need to learn its new techniques so
please don't miss that session like I
said once you've got all that going
you're going to be running your
application on 8 and 9 fun part is
running a mac-10 there are some fun time
issues to think about the first one is
alone because the carbon api's are
included all in one set that doesn't
mean that all those AP is and their
implementation are available on every
version of the OS but that's how it is
already today so for example if you
using nav services on Mac OS 81 new a
new AP eyes were introduced to it in one
on 85 but that's I mean I'll sudden
those AP eyes are available i want so
what we're all used to do with your
style check to make sure that this
version of a technology is running
indeed on this big machine that you're
running and that's true with carbon so
all the api's are kind of one big set
she's allowed to be runtime checks to
make sure those api's are available on
the machine that you're running this
kind of a picture of Scott for showed
this on Monday I'm carbon is a living
growing thing and as you can see more
and more api's be kind of global with
each release of the OS and is through
carbon exposes those API through your
carbon applications when we're running
on e OS that supports the API and also
the good news about carbon is that we
are indeed bringing back I made some
technologies back like carbon events to
corporation a card printing data browser
another issue to think about when you're
running a carbon application is memory
so one binary but running in two very
different environments concerning memory
on that tenant application as virtually
unlimited memory you should use this
result to make sure the memory
environment you're running it and be
careful when using freeing them one
common technique developers I know of
you because they call from them and
allocate the rest of their apps heap
space and it's kind of doing custom
memory management and of course you can
see would not want to do that mac OS 10
if you want to grab four gigabytes and
manage it yourself but i can guarantee
performance will change mac OS 10 growth
and prox are not hot again really
because the unnecessary with four
gigabytes of adverse fate application
never answer Ruis memory so that the
system can keep going and i've already
mentioned on that end zones are not
supported
so I would be when i wrote this slide
and i was thinking i can't put that up
favorite be too easy so what does that
mean what that means is that a carbon
application its sleep time that passed
away next event is fully supported now
it's not like you sleep but getting all
events in interim that's just not way to
idle time anymore you should fully use
custom a custom mechanism have your own
if you're going to be using carbon 1 dot
0 dot two three or four we won one that
I was before or carbon events timers if
you're using carbon live 11 or mac OS 10
that's the way to get a appropriate way
to get idle time for your application so
some of you because of this are going to
be tempted to lower your sleep values
down so that you can keep getting time
back on the processor that is not
recommended and we really do want you to
switch to these other mechanisms we're
hoping that all of you will be able to
switch to passing the constant for the
longest sleep time to wait next event
because otherwise your application just
keeps requesting time that doesn't
necessarily always need and in the new
preemptive environment on Mac OS 10 and
even on Mac OS eight or nine we don't
want to be seen that happen so I wanted
to point out one sample scenario that we
had experienced that revealed the nature
of this change in carbon a one developer
when they launched their aplicar when
they pull down there a bow box they
started scrolling the credits and stuff
and then they stopped when they brought
the dapple we were just all so like
what's that but it turns out that indeed
this application was using or counting
on Knoll events to do idle time
processing to scroll the text in the
about box the interesting thing is that
if you started moving the mouse the text
is started scrolling normally but that's
because the app started receiving Mouse
moved events so that's kind of a symptom
that you should keep in mind when you're
trying to look out for the nature of
this change with carbon apps we haven't
confirmed this yet but another developer
was complaining about slower processing
of a lot of data in the application and
we're suspecting that this might also be
the problem if they're using are
counting on Knoll events to get a
processing time for this huge
calculation they're doing this would not
work that wouldn't work for them that
way anymore so a couple sessions that I
want to point out carbon Mackle eight or
nine we'll talk about a few more run
time issues that your Apple experience
working on 8 and 9 and 7 130 carbons the
level is a really important session to
learn about some time issues that will
affect your carbon application when
running on Mac OS 10 so i would really
stress that you make it to that session
and it's a friday of five and in this
room and I got a lot of flack for
scheduling at that time so you all have
to come or else I'm going to get it so
now I'm just kidding Cleta it's it's
really critical information as stuff
that I'm not going into here because
it's going to be a nap session so carbon
magic we mean by that and it's really
true well like said in the kitchens and
just me into a lot of developers you
know kind of gets looking at let me get
this straight you're telling me that if
I modify my source code in some
appropriate way Apple is going to be
able to swap out an entire OS from
underneath my applications swap in a
completely new one and I'm just going to
work it sounds well magic is a strong
word but it was the one that stuck out
in my mind that this person had used and
the good news is that with confidence I
get to say yes really and I'm not just
saying this based on speculation I'm
saying it from experience in some
kitchens that we've had and a lot of the
demos that you saw earlier this week
applications are just coming up on ten
after they do their carbon work like I
said traditionally there about three to
seven hiccups and it's really fun to
watch the developers face you know
because they're just oh my gosh you know
like here comes up on Mac OS 10 and when
I first yeah I started this job last
summer we had a kitchen in October and I
remember the first time you know a major
application came up on Mac OS 10 and I
was standing there you know
I believed in this technology we've seen
it working internally at Apple but you
know use bringing developers and I don't
know their source code I don't know all
this stuff they've been doing and the
developer has finished carbonizing and
we're bringing over to 10 and they had a
couple of hiccups and then it just
started coming up on ten and I remember
my reaction I was like oh my gosh you
know and then of course I had to switch
to apple and go oh of course yeah that's
tough you know of course that would work
you know but anyway over time with
experience I'd see developers would that
look on their face the second time I
think I was like why I'm pretty sure you
know because I just had that experience
but now developers come in and without
any hesitation that that happens just
over and over and over again and so it's
magic it's well it's true it really
works so if you want to get more
information about carbon please be sure
to see our website developer apple com
if you go to the mac OS 10 section
underneath that is a carbon section
there pointer to the sdk and
documentation there you also directly to
the documentation via text hubs carbon
us to complete a carbon porting guide
intera mentioned comes in the SDK
another important resource to keep in
mind is to carbon specification that is
on the web but that is a comprehensive
list of API zinc urban you guys will be
reviewed at this time so if you go to
the website and you see an API that's
undervaluation that means that we're
still going through API reviews making
sure that those api's will work in all
the environments that a carbon
application will exist in like a modern
OS preemptive environment thread safety
and of if so the API will be approved
and you'll see that changed is supported
but the thing to keep in mind is that
those API is that our mark is still
under evaluation we are not we're not
committing to support those so you just
need to know that if you're going to go
ahead and use those that label could at
some point change the unsupported
who've been providing workarounds and
alternatives I just wanted to be clear
about what that label means on the spec
Scott mentioned this on Monday but I
just wanted to mention it again if you
go to this website developer apple com
go to the marketing section programs
carbon we have about five right now five
consulting firms that are providing
services to just port your application
so if resources are an issue and I know
they are in this industry and you need
to get your application ported please be
sure to visit this website for those
services a couple other sessions that I
wanted to point you to our the
high-level toolbox carbon enhancements
one and two they're also going to go
into the types of changes that i was
discussing today but specific to
high-level full box so be sure to do
those i'm not going to guess a
percentage number i don't think at times
a very large percentage of the compiler
errors and changes that carbon
development experience from the
high-level toolbox so be sure to attend
these sessions cut a critical
information you want to know as you
perceive carbonating your application so
at this time we're going to move into QA
and i'd like to ask the panelists to
come up on stage