Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / fpc-devel / 2009-11

Objective-Pascal support merged to trunk

1 message · 1 person ·

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Jonas Maebe

Hello,

Since the existing Objective-C support has stabilised quite well, I've merged it from the objc branch into trunk. All future Objective-Pascal development will also happen in trunk, and the objc branch is now closed for further development. Note that you have to start the initial compilation with FPC 2.2.4/2.3.x/2.4.0rc1 (not yet released), starting the compilation with a previously compiled trunk compiler will fail.

As the commit messages says, this branch basically adds the following:

* merged objc branch:
+ basic support for Objective-Pascal: objcclass, objcprotocol, objcselector on all Darwin platforms (ppc32/64, i386, x86_64, ARM),
see http://wiki.freepascal.org/FPC_PasCocoa and
http://wiki.freepascal.org/FPC_PasCocoa/Differences for some dialect
details. Use {$modeswitch objectivec1} to activate
+ Cocoa, iPhone/UIKit and WebKit interfaces for use with the new syntax mode

For those that had the objc branch checked out and would like to convert it to trunk without checking out a completely clean copy, you can use the following command (only execute it once; afterwards you can use "svn up" as before to update to newer versions):

svn switch http://svn.freepascal.org/svn/fpc/trunk fpcobjc

(replace fpcobjc with the directory where your objc branch was checked out).

Ryan, I've given you write access to the newly created cocoaint directory in trunk, so you can still commit newer versions of your header translations and conversion scripts.

In the near future, I'll also commit the result of the work that Gorazd Krosl and I did to bring the univint headers (MacOSAll and friends) up-to-date. All existing headers have been updated to Mac OS X 10.6, they have been made 64 bit safe (to the extent that they are supported on 64 bit systems), and support for the iPhoneOS has been added (i.e., routines not available on the iPhoneOS are ifdef'ed out when compiling for Darwin/ARM -- the reason that this was possible, is that the Mac OS X 10.6 headers contain this information as well, and do not fall under the iPhone SDK "no derivative works" agreement).

One implementation change is that the MacOSAll unit for FPC will no longer be a single gigantic file. The reason is that the new file became 14MB (it was 10MB) and svn chokes on calculating the diff with the previous version (I let it run more than 5 minutes at 100% cpu on my MacBook before I killed it, and it would not be sustainable if svn would cause the same load on the server every time someone updated or asked for that diff).

Instead, every independent unit from which MacOSAll was built will contain ifdef's that make it usable both as a separate unit, and as an include file in a single MacOSAll unit. The new MacOSAll unit will simply set this define and then include all units in the appropriate order. This will make no difference whatsoever for your programs, but it will no longer be possible to conveniently browse/search a single file for all routines. If you want, you will always still be able check out the http://svn.freepascal.org/svn/macosxintf/trunk repository, type "make fpcpinterfaces -j 2" and afterwards open the generated Build/FPC/MacOSAll.pas unit to still see everything in one file.

We're also considering to split the MacOSAll unit somewhat in the future. Carbon, CoreServices and CoreFoundation will probably remain together due to interdependencies (possibly a few others as well, it depends on the dependencies), but some independent frameworks (such as AddressBook, CoreVideo, etc.) will probably get their own "collection" units.

Jonas

Reply by email