Wednesday, October 21, 2009

Two cool (and underreported) things about Snow Leopard.

I recently upgraded my various Macs to Snow Leopard, Apple's streamlined new operating system. So far two things have caught my eye, both of them very nice surprises.
  1. System Perl is now version 5.10.
  2. The Activity Monitor now shows Safari Plug-Ins such as the disastrous resource-hog Adobe Flash as separate processes.
So now when your fans start going nuts over a YouTube video, you can see exactly who's to blame. As usual, Adobe is to blame. I have yet to try killing the Flash process to see if it can be done without affecting the rest of Safari, but I'm hopeful it might. As for the Perl, here are the geeky details:
kfrost@mbp ~/bloc $ perl -V
Summary of my perl5 (revision 5 version 10 subversion 0) configuration:
 Platform:
   osname=darwin, osvers=10.0, archname=darwin-thread-multi-2level
   uname='darwin neige.apple.com 10.0 darwin kernel version 10.0.0d8: tue may 5 19:29:59 pdt 2009; root:xnu-1437.2~2release_i386 i386 '
   config_args='-ds -e -Dprefix=/usr -Dccflags=-g  -pipe  -Dldflags= -Dman3ext=3pm -Duseithreads -Duseshrplib -Dinc_version_list=none -Dcc=gcc-4.2'
   hint=recommended, useposix=true, d_sigaction=define
   useithreads=define, usemultiplicity=define
   useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
   use64bitint=define, use64bitall=define, uselongdouble=undef
   usemymalloc=n, bincompat5005=undef
 Compiler:
   cc='gcc-4.2', ccflags ='-arch x86_64 -arch i386 -arch ppc -g -pipe -fno-common -DPERL_DARWIN -fno-strict-aliasing -I/usr/local/include',
   optimize='-Os',
   cppflags='-g -pipe -fno-common -DPERL_DARWIN -fno-strict-aliasing -I/usr/local/include'
   ccversion='', gccversion='4.2.1 (Apple Inc. build 5646)', gccosandvers=''
   intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678
   d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
   ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
   alignbytes=8, prototype=define
 Linker and Libraries:
   ld='gcc-4.2 -mmacosx-version-min=10.6', ldflags ='-arch x86_64 -arch i386 -arch ppc -L/usr/local/lib'
   libpth=/usr/local/lib /usr/lib
   libs=-ldbm -ldl -lm -lutil -lc
   perllibs=-ldl -lm -lutil -lc
   libc=/usr/lib/libc.dylib, so=dylib, useshrplib=true, libperl=libperl.dylib
   gnulibc_version=''
 Dynamic Linking:
   dlsrc=dl_dlopen.xs, dlext=bundle, d_dlsymun=undef, ccdlflags=' '
   cccdlflags=' ', lddlflags='-arch x86_64 -arch i386 -arch ppc -bundle -undefined dynamic_lookup -L/usr/local/lib'


Characteristics of this binary (from libperl):
 Compile-time options: MULTIPLICITY PERL_DONT_CREATE_GVSV
                       PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP USE_64_BIT_ALL
                       USE_64_BIT_INT USE_ITHREADS USE_LARGE_FILES
                       USE_PERLIO USE_REENTRANT_API
 Locally applied patches:
       /Library/Perl/Updates/ comes before system perl directories
       installprivlib and installarchlib points to the Updates directory
 Built under darwin
 Compiled at Jun 24 2009 00:35:27
 %ENV:
   PERL5LIB=""
 @INC:
   /Library/Perl/Updates/5.10.0/darwin-thread-multi-2level
   /Library/Perl/Updates/5.10.0
   /System/Library/Perl/5.10.0/darwin-thread-multi-2level
   /System/Library/Perl/5.10.0
   /Library/Perl/5.10.0/darwin-thread-multi-2level
   /Library/Perl/5.10.0
   /Network/Library/Perl/5.10.0/darwin-thread-multi-2level
   /Network/Library/Perl/5.10.0
   /Network/Library/Perl
   /System/Library/Perl/Extras/5.10.0/darwin-thread-multi-2level
   /System/Library/Perl/Extras/5.10.0
   .