[comp.sys.mac.hypercard] Compatibility of stacks and Hypercard 2.0

kulp@cs.nps.navy.mil (Jeff Kulp x2174) (07/26/90)

	Will stacks written using Hypercard version 1.2.x run under version 2.0?

Jeff Kulp
kulp@cs.nps.navy.mil

psych@watserv1.waterloo.edu (R.Crispin - Psychology) (07/26/90)

In article <1133@cs.nps.navy.mil> kulp@cs.nps.navy.mil (Jeff Kulp x2174) writes:
>
>	Will stacks written using Hypercard version 1.2.x run under version 2.0?
>
>Jeff Kulp
>kulp@cs.nps.navy.mil

I have tried all of my major stacks and they all ran. There is a problem with
some of the XCMDS though especially ones that try to work directly with fields
(like FileToField). They need to be converted (a simple process) otherwise they
are locked.

Richard Crispin              Phone:    (519)888-4781
Dept. of Psychology          Bitnet:   psych@watdcs 
University of Waterloo       Internet: psych@watserv1.UWaterloo.ca 
Waterloo, Ont.   Canada   N2L 3G1

jkc@Apple.COM (John Kevin Calhoun) (07/26/90)

>  Will stacks written using Hypercard version 1.2.x run under version 2.0?

Yes.  Until you convert them to the new 2.0 file format, they'll operate
as read-only stacks in 2.0, just as they operate in 1.2.x when they live
on locked disks, for example.

The conversion is easy.  When you open a 1.x with 2.0, the "Compact Stack"
item in the File menu changes to "Convert Stack".  Choose "Convert Stack"
and HyperCard does the rest.  It's just as painless as compaction (and
in fact is really the same thing internally).  Once a stack is converted,
however, you can't open it anymore with 1.x.  There's nothing wrong with
that, unless you discover an incompatibility between your stack and
HyperCard 2.0.  It's wise, then, to convert a copy of the stack and check
it out under 2.0 before chucking your old copy of HyperCard.

So, the following question will undoubtedly come up:  what incompatibilities
are likely to arise?  We've seen two, both of which occur infrequently--
  1)  An XCMD that worked fine under 1.x has trouble under 2.0.  The
      cause is usually that the XCMD made some assumption about HyperCard's
      world--it's use of memory, for example--that is no longer valid.
      The vast majority of XCMDs continue to work under 2.0.
  2)  A script has an error in code that never executes.  The old interpreter
      would never see the offending line, and so the script would work.  The
      compiler knows all, sees all, and will refuse to run the script.
      Although you may be thinking to yourself, gosh, I wonder if this will
      happen to me, I doubt that you'll run into this.  It's more of a
      theoretical worry than a practical problem.  It hasn't come up very
      often in our testing.

Anyway, although incompatibilities will be rare, they will arise.  So, my
advice is to convert a copy and check it out.  Then, when you come to know
and love 2.0 the way we do, you can abandon the past and take advantage of
the many, many improvements.

Kevin Calhoun
Software engineer
Apple Computer

gft_robert@gsbacd.uchicago.edu (07/27/90)

----------------- 
In article <43360@apple.Apple.COM>, jkc@Apple.COM (John Kevin Calhoun) writes...
[...
>Anyway, although incompatibilities will be rare, they will arise.  So, my
>advice is to convert a copy and check it out.  Then, when you come to know
>and love 2.0 the way we do, you can abandon the past and take advantage of
>the many, many improvements.


Um, is there any clue as to when we might be able to "come to know and love
2.0" the way you do?

I know, patience is a virtue, but all this talk of 2.0's features makes me
impatient.  :->

Robert

============================================================================
= gft_robert@gsbacd.uchicago.edu * generic disclaimer: * "It's more fun to =
=            		         * all my opinions are *  compute"         =
=                                * mine                *  -Kraftwerk       =
============================================================================

bc@Apple.COM (bill coderre) (07/27/90)

|>Anyway, although incompatibilities will be rare, they will arise.  So, my
|>advice is to convert a copy and check it out.  Then, when you come to know
|>and love 2.0 the way we do, you can abandon the past and take advantage of
|>the many, many improvements.

In addition to 1) XCMDS, and 2) semi-buggy code, let me add 3) piggy
stacks to the list. Some stacks (games, for example) are very piggy
about their running environment, and therefore will take total control
of HC, preventing the user from doing other things.

This will be painful when you open a games stack "in a new window" and
then discover that you have trouble with other open stacks.

Workaround: don't do that!

Some other, not so piggy stacks also have trouble with the
multi-window concept of reality, although most of that trouble won't
be harmful.

BTW, HC 2.0 will "save a copy" of a HC 1.x stack just as well as HC
1.x will, so that should simplify things for you cautious types.

Personal advice: be cautious! Bugs tend to be pitifully inoffensive,
but you shouldn't take the chance. Do make a copy, then blindly smash
ahead.

Better advice: have a LOT of fun!

mr HEINOUS
final and ultimate arbiter of taste and discretion.

man@eilat.cs.brown.edu (Mark H. Nodine) (07/27/90)

In article <1990Jul26.192703.894@midway.uchicago.edu>,
gft_robert@gsbacd.uchicago.edu writes:
|>----------------- 
|>In article <43360@apple.Apple.COM>, jkc@Apple.COM (John Kevin Calhoun)
writes...
|>[...
|>Um, is there any clue as to when we might be able to "come to know and love
|>2.0" the way you do?
|>
|>I know, patience is a virtue, but all this talk of 2.0's features makes me
|>impatient.  :->

That brings up another question.  I currently have an 800K disk with a
Finder (Minifinder, actually), a System 6.0.5, HC 1.2.5, the Home stack,
and a Ramdisk program.  When I start up from it, it creates a RamDisk,
copies the stuff exclusive of the RamDisk program to the Ramdisk and
makes the RamDisk my startup disk.  That way, I can run my HC stacks
with no hard disks (useful when I'm traveling).  So my question is: how
much bigger is HC 2.0 than HC 1.2.5?  Do I still have any chance of
being able to do this?  I think I have about 80K free on the startup
disk in my current situation.

	--Mark

ccc_ldo@waikato.ac.nz (Lawrence D'Oliveiro, Waikato University) (07/30/90)

In <45998@brunix.UUCP>, man@eilat.cs.brown.edu (Mark H. Nodine) asks
about the size of HyperCard 2.0 versus the current version.

On my hard disk, HyperCard 2.0B25 takes up 613K, versus 384K for
1.2.5.

I guess if you want to continue avoiding hard disks, you'll have
to go to a high-density floppy...

Lawrence D'Oliveiro                       fone: +64-71-562-889
Computer Services Dept                     fax: +64-71-384-066
University of Waikato            electric mail: ldo@waikato.ac.nz
Hamilton, New Zealand    37^ 47' 26" S, 175^ 19' 7" E, GMT+12:00
And finally, a message for all power users: pay your electricity bills!

bc@Apple.COM (bill coderre) (08/01/90)

Lawrence:
|On my hard disk, HyperCard 2.0B25 takes up 613K, versus 384K for
|1.2.5.

It's a Bad Idea to go predicting code sizes based on betas. Some betas
contain debug code, which of course would make them bigger and slower.

I wouldn't doubt HC 2 ending up bigger than version 1, though. There's
a LOT more features in it.

It might make sense to develop in version 1, keeping an eye on version
2 compatibility (not a real challenge, mind you) for those with more
memory/disk space/big screens, whatever.

bill coderre
consultant to apple

SAS102@psuvm.psu.edu (Steven A. Schrader) (08/01/90)

In article <43469@apple.Apple.COM>, bc@Apple.COM (bill coderre) says:
>
>Lawrence:
>|On my hard disk, HyperCard 2.0B25 takes up 613K, versus 384K for
>|1.2.5.
>
>It's a Bad Idea to go predicting code sizes based on betas. Some betas
>contain debug code, which of course would make them bigger and slower.
>
>I wouldn't doubt HC 2 ending up bigger than version 1, though. There's
>a LOT more features in it.

Actually the size would not bother me greatly if we could compile the code so
HyperCard programs could run without HyperCard. Even if HC 2 does become only
500K, that means you have roughly 200K left for a stack (which is not an
incredible amount). If we could compile the whole thing to use only those parts
 of HyperCard we need, out 200K program might turn into 400K, but might not

need Hypercard and the Home stack (Which also gets up to 100 - 200 K).

This is one of the niggest downfalls of HyperCard--it's reliance on itself to
run. If we can compile Hypercard can go from a developing tool to a complete
app builder.
=========================================================================
         Steven A.  Schrader (SAS102 @ Psuvm.Bitnet)
         Graduate Student Consultant
         Student Support Initiative, The Center for Academic Computing
         The Pennsylvania State University

man@eilat.cs.brown.edu (Mark H. Nodine) (08/01/90)

In article <90213.091703SAS102@psuvm.psu.edu>, SAS102@psuvm.psu.edu
(Steven A. Schrader) writes:
|>Actually the size would not bother me greatly if we could compile the code so
|>HyperCard programs could run without HyperCard. Even if HC 2 does become only
|>500K, that means you have roughly 200K left for a stack (which is not an
|>incredible amount). If we could compile the whole thing to use only
those parts
|> of HyperCard we need, out 200K program might turn into 400K, but might not
|>need Hypercard and the Home stack (Which also gets up to 100 - 200 K).

The only problem with this suggestion is how do you know what parts of
HyperCard will be needed and what parts won't.  For example, one of my
stacks is being used for keeping my maps and other things during fantasy
role playing (a la D&D) expeditions.  A great advantage that HyperCard
has is that I can draw on and change the maps on the fly, using the
paint tools, even though my stack is a complete "application".  Also,
some of my buttons use the painting tools as well to draw things on the screen.

	--Mark

APPLEREP@MTUS5.BITNET (08/02/90)

Don't forget, also, that the ability to customize an existing stack is one
of Hypercard's greatest strenghts.  It gives the user the ability to both
utilize parts of someone else's stack in the way that best benefits them,
and to learn a great deal about stack construction.  If Hypercard stacks
were to be saved as compiled applications, I think you would probably lose
a lot of that great open-endedness that it has.

Tom Amberg
Apple Student Rep
Michigan Technological University (Go Huskies!!)

Disclaimer:  (the usual stuff)

bc@Apple.COM (bill coderre) (08/03/90)

In article <90213.175513APPLEREP@MTUS5.BITNET> APPLEREP@MTUS5.BITNET writes:
|Don't forget, also, that the ability to customize an existing stack is one
|of Hypercard's greatest strenghts.  

Ahh, but commercial stack developers aren't real keen on this, because
it also allows competitors to see how their code works. Thus,
incredibly involved pipeworks of protection code.

But this is neither dross nor scoria.

The problem with compiling HC is that it is, at heart, a "late
binding" language. Consider this example:

on mouseup
  get cd fld "code"
  do it
end mouseup

Since HC has no idea what is in the field until the moment the mouse
goes up, it would have to carry around -- at the very least -- an
interpreter or compiler in EVERY compiled stack, to execute the "do."
And if HC was "nice," it would carry around all of itself in any
compiled stack, just to make sure that any valid hypertalk the user
entered could be executed. Thus compiled stacks wouldn't be able to
shrink.

Note that there are several ways around this. Many popular late
binding languages, such as Common Lisp, allow both.

1) Allow the user to specify various lumps of code that can be left
out. If HC can't "do" because of missing code, the application vomits.

2) Enforce that any compiled stack cannot contain any "do" that has a
non-constant as an argument. This allows lots of code removal, but
hinders many other HC features, such as the Message Box, and XCMDs,
which often ask HC to evaluate a line of hypertalk.

These aren't such big problems to many developers, and indeed a
campiled stack would be a wonderful thing: smaller, faster, more
secure, and easier to ship (no need to demand a certain HC version on
disk).

The only problem is simply that it is a gigantic leap in complexity,
even assuming that stack scripts are partially compiled now. Many
Lisps don't allow "application building" even though they compile all
their code. Application building is simply a huganic problem to do
"right."

This is not to say that Hypercard or Supercard shouldn't do it. It's
just to say why it isn't easy, and therefore why it tends not to be
done.

bc
consultant, not mouthpiece

ccc_ldo@waikato.ac.nz (Lawrence D'Oliveiro, Waikato University) (08/07/90)

In <43469@apple.Apple.COM>, bc@Apple.COM (bill coderre) comments
(on my posting about the size of HyperCard 2.0B25) "It's a Bad Idea
to go predicting code sizes based on betas. Some betas contain debug
code, which of course would make them bigger and slower."

I just had a look for debugger symbols, and apart from a small number
of glue routines, I couldn't find any. This suggests that most of the
debug code has been removed.

Lawrence D'Oliveiro                       fone: +64-71-562-889
Computer Services Dept                     fax: +64-71-384-066
University of Waikato            electric mail: ldo@waikato.ac.nz
Hamilton, New Zealand    37^ 47' 26" S, 175^ 19' 7" E, GMT+12:00
"...so she tried to break into the father bear's computer, but it was
too hard. Then she tried to break into the mother bear's computer, but
that was too easy..."

stadler@Apple.COM (Andy Stadler) (08/08/90)

In article <1170.26bef8bc@waikato.ac.nz> ccc_ldo@waikato.ac.nz (Lawrence
  D'Oliveiro, Waikato University) writes:
>
>I just had a look for debugger symbols, and apart from a small number
>of glue routines, I couldn't find any. This suggests that most of the
>debug code has been removed.
>

Besides the normal Mac debugging symbols (which are indeed left out in any
external build) HyperCard also includes a complete internal debugging package.
Some pieces of this may or may not still exist.  Unlike debug symbols, to a
disassembler or tracer they would look just like more subroutine calls.

However, let's not kid ourselves - HC 2.0 -is- quite a bit bigger than 1.x.

--Andy     stadler@apple.com

stm@apple.com (Steve Maller) (09/07/90)

In article <45998@brunix.UUCP> man@eilat.cs.brown.edu (Mark H. Nodine) 
writes:
> So my question is: how much bigger is HC 2.0 than HC 1.2.5?  Do I
> still have any chance of being able to do this?  I think I have
> about 80K free on the startup disk in my current situation.

The final size of HyperCard 2.0 is 684,081 bytes. The Finder says that 
accounts for 669K on the floppy disk.

Steve Maller
HyperCard Engineering Team
Apple Computer

gaynor@hpuxa.ircc.ohio-state.edu (Jim Gaynor) (09/07/90)

In article <10075@goofy.Apple.COM> stm@apple.com (Steve Maller) writes:
>
>The final size of HyperCard 2.0 is 684,081 bytes. The Finder says that 
>accounts for 669K on the floppy disk.

	Does this mean it's done, Steve?  One of my local retailers
told me that his Apple guy was stating a shipping date of this week.

	I'd love to find out that it's true...

-=-
+-----------------------------------------------------------------------------+
| Jim Gaynor - The Ohio State Univ. - IRCC - Facilities Mgmt. - OCES  <whew!> |
| Email [gaynor@hpuxa.ircc.ohio-state.edu], [gaynor@agvax2.ag.ohio-state.edu] |
|_  "Don't tell me truth hurts, little girl; because it hurts like hell..."  _|