History | Log In     View a printable version of the current page.  
Issue Details (XML | Word | Printable)

Key: LPP-3438
Type: Task Task
Status: Resolved Resolved
Resolution: Fixed
Priority: P1 P1
Assignee: Sarah Allen
Reporter: P T Withington
Votes: 0
Watchers: 1
Operations

If you were logged in you would be able to see more operations.
OpenLaszlo

Implement "binary libraries"

Created: 17/Jan/07 04:22 AM   Updated: 23/May/07 05:33 AM
Component/s: Compiler
Affects Version/s: 3.4
Fix Version/s: 3.4.2

Time Tracking:
Not Specified

Severity: Minor
Fixed in Change#: 5,183
Fixed in branch: branches/3.4
Runtime: N/A
Fix in hand: False


 Description  « Hide
From: P T Withington <ptw@openlaszlo.org>
Subject: Re: Binary libraries, like LFC.lzl
Date: Sat, 9 Dec 2006 14:38:39 -0500

I understand. I am pointing out that the current .lzl has only
binary code, no linking information. The linking is done
'dynamically' by the Flash player, by making every .lzl a global.

.o and its descendants are very ancient technology. I think it would
be a mistake to take them as a model. They consist of binary code
and relocation/linking information.

'modern' compilers, especially for object-oriented languages, can
take advantage of class meta information to permit compile-time
optimizations. If we want to be able to take advantage of such
gains, we will need to maintain that information in our libraries, too.

The simplest way to do that right now is to simply serialize the
internal compiler data for each library, and reconstitute it. This
is more information than we really need, but as long as the interface
to '.lzl' files is opaque, we can evolve the content as necessary to
meet the needs of obfuscation and optimization. What I am proposing
to serialize is the state of the script compiler, not the tag
compiler, so it will be no easier to recover the source LZX from that
than it would be by decompiling a swf; the .lzl will be a 'binary'
file, not a text file.


 All   Comments   Work Log   Change History      Sort Order: Ascending order - Click to sort in descending order
P T Withington - 17/Jan/07 04:27 AM
Henry pointed out that one of the pieces of compiler information that will need to be serialized to make binary LZX libraries work is the information that is used to extend the schema and the information in NodeModel which is used to derive inherited attribute types at compile-time. This information is encoded by hand in the schema file for the LFC, which greatly simplifies the issue there. Doing this in general for LZX libraries won't be so easy, it seems.

P T Withington - 05/Feb/07 05:19 PM
r3667 | ptw | 2007-02-05 20:16:51 -0500 (Mon, 05 Feb 2007) | 107 lines
Changed paths:
   M /openlaszlo/trunk/WEB-INF/lps/lfc/services/LzLoadQueue.as
   M /openlaszlo/trunk/WEB-INF/lps/schema/lzx.rnc
   M /openlaszlo/trunk/WEB-INF/lps/server/sc/src/org/openlaszlo/sc/parser/SimpleNode.java
   M /openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/AttributeSpec.java
   M /openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/CanvasCompiler.java
   M /openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/ClassCompiler.java
   M /openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/ClassModel.java
   M /openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/CompilationEnvironment.java
   M /openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/Compiler.java
   M /openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/DataCompiler.java
   M /openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/FontCompiler.java
   A /openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/InterfaceCompiler.java
   M /openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/LibraryCompiler.java
   A /openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/LibraryWriter.java
   M /openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/Main.java
   M /openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/NodeModel.java
   M /openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/ResourceCompiler.java
   M /openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/SWFFile.java
   M /openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/SWFWriter.java
   M /openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/ScriptElementCompiler.java
   M /openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/ToplevelCompiler.java
   M /openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/ViewCompiler.java
   M /openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/ViewSchema.java
   M /openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/sc/Assembler.java
   M /openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/sc/CodeGenerator.java
   M /openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/sc/Compiler.java
   M /openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/sc/CompilerError.java
   M /openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/sc/CompilerImplementationError.java
   M /openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/sc/Function.java
   A /openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/sc/JavascriptCompressor.java
   M /openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/sc/ReferenceCollector.java
   A /openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/sc/ScriptClass.java
   M /openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/utils/ComparisonMap.java
   M /openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/utils/FileUtils.java
   M /openlaszlo/trunk/test/smoke/lzunit-test.lzl

Change 20070131-ptw-V by ptw@dueling-banjos.local on 2007-01-31 10:59:47 EST
    in /Users/ptw/OpenLaszlo/trunk

Summary: binary libraries in 3.4

Bugs Fixed:
LPP-3438: 'Implement "binary libraries"'

Technical Reviewer: hminsky (IM 15:10 US/Eastern)
QA Reviewer: max (Message-ID: <45C7A6D6.10208@openlaszlo.org>)
Doc Reviewer: sallen (Message-ID: <1313087.1170603354985.JavaMail.sallen@localhost>)

Documentation:
    To create a binary library, you compile the library as:

      lzc -c library.lzx

    This creates a `library.lzo` file in the same directory. Any
    program that includes the `library.lzx` will prefer the .lzo if
    that is found. It is up to your build process to ensure that the
    .lzo file is kept up to date.

Details:
    Back-port of this feature to 3.4. As you can see, I hardly had to
    change anything to get it to work in 3.4.

Detailed details:
    [Changes ported from Legal's are marked with `-`, new changes are
    marked with `+`]

    - lzunit-test: Handle Flash 9 player

    - lzx.rnc: New element <interface> can be used to extend schema,
      script tag can take `when` and `type`.

    + LzLoadQueue: Fix paren-oh that causes smokecheck to fail in swf6.

    - SimpleNode: don't bomb when adding children via set.

    + FileUtils: open .lzo files as GZIP.

    + ComparisonMap: maintain entry order.

    - ReferenceCollector: Eliminate redundant constraints, properly
      express contraints on global functions, sanitize names.

    - Compiler: Unparse super calls

    - Assembler: Correct assoc-oh in block out of range error message.

    + Compiler, CodeGenerator, ToplevelCompiler, SWFFile: Remove Krank
      Kruft

    - Compiler, CodeGenerator: back-port compressing/obfuscating
      unparser, and other miscellaneous compiler improvements.

    + JavascriptCompressor: Adapted from Legal's JavascriptGenerator

    + CompilerError, CompilerImplementationError: Adapt to new
      location string

    + Function: Permit overriding name, maintain source-location info.

    - ScriptClass: Scaffolding for outputting an LZX class as a JS class.

    - LibraryCompiler: Load .lzo (binary) library if available.

    - ClassCompiler: Split out actual generation of class code so it
      can be overridden in a subclass.

    - ViewCompiler, ResourceCompiler, FontCompiler,
      CompilationEnvironment, Compiler: Permit compiling of <library>
      without <canvas>

    + ToplevelCompiler: Compile interfaces, maintain auto-include
      information

    - InterfaceCompiler: Compiles an <interface>, updating the schema.

    + ViewSchema, AttributeSpec, ClassModel: Add toLZX method that
      generates an <interface> from the schema.

    + SWFWriter: open to subclassing
    
    - LibraryWriter: New compiler back-end, subclass of SWFWriter,
    captures object-code and outputs it to a binary library.

    - CompilationEnvironment: Store object file so back-ends can
      relativize paths.

    + DataCompiler: If not compiling to canvas, defer compiling data.

    + NodeModel: Store methods in class model, use new location format
      for functions, ensure generated method names are unique.

    - ScriptElementCompiler: support `when='immediate'`

    - Compiler, Main: New option '-c' permits compiling a <library> to .lzo.

    - Compiler: Add InterfaceCompiler.

    + ClassModel: Make comparable so classes can be sorted according
      to superclass, add hasNodeModel to tell when a class has had code
      generated for it, maintain class method specifications.

Tests:
    smoketest, compiled LFC, flasmed and compared to previous -- no change

P T Withington - 05/Feb/07 05:20 PM
I assume you will let me know if this does not work for you guys!

P T Withington - 23/May/07 05:33 AM
r5183 | ptw | 2007-05-23 08:30:11 -0400 (Wed, 23 May 2007) | 700 lines
Changed paths:
   M /openlaszlo/branches/3.4
   M /openlaszlo/branches/3.4/WEB-INF/lps/lfc/glue/LaszloInitiator.as
   M /openlaszlo/branches/3.4/WEB-INF/lps/lfc/services/LzLoadQueue.as
   M /openlaszlo/branches/3.4/WEB-INF/lps/schema/lzx.rnc
   M /openlaszlo/branches/3.4/WEB-INF/lps/server/bin/lzc
   M /openlaszlo/branches/3.4/WEB-INF/lps/server/sc/src/org/openlaszlo/sc/parser/SimpleNode.java
   M /openlaszlo/branches/3.4/WEB-INF/lps/server/src/org/openlaszlo/cm/CompilationManager.java
   M /openlaszlo/branches/3.4/WEB-INF/lps/server/src/org/openlaszlo/compiler/AttributeSpec.java
   M /openlaszlo/branches/3.4/WEB-INF/lps/server/src/org/openlaszlo/compiler/CanvasCompiler.java
   M /openlaszlo/branches/3.4/WEB-INF/lps/server/src/org/openlaszlo/compiler/ClassCompiler.java
   M /openlaszlo/branches/3.4/WEB-INF/lps/server/src/org/openlaszlo/compiler/ClassModel.java
   M /openlaszlo/branches/3.4/WEB-INF/lps/server/src/org/openlaszlo/compiler/CompilationEnvironment.java
   M /openlaszlo/branches/3.4/WEB-INF/lps/server/src/org/openlaszlo/compiler/CompilationError.java
   M /openlaszlo/branches/3.4/WEB-INF/lps/server/src/org/openlaszlo/compiler/Compiler.java
   M /openlaszlo/branches/3.4/WEB-INF/lps/server/src/org/openlaszlo/compiler/DataCompiler.java
   M /openlaszlo/branches/3.4/WEB-INF/lps/server/src/org/openlaszlo/compiler/FileResolver.java
   M /openlaszlo/branches/3.4/WEB-INF/lps/server/src/org/openlaszlo/compiler/FontCompiler.java
   M /openlaszlo/branches/3.4/WEB-INF/lps/server/src/org/openlaszlo/compiler/ImportCompiler.java
   A /openlaszlo/branches/3.4/WEB-INF/lps/server/src/org/openlaszlo/compiler/InterfaceCompiler.java (from /openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/InterfaceCompiler.java:3667)
   M /openlaszlo/branches/3.4/WEB-INF/lps/server/src/org/openlaszlo/compiler/LibraryCompiler.java
   A /openlaszlo/branches/3.4/WEB-INF/lps/server/src/org/openlaszlo/compiler/LibraryWriter.java (from /openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/compiler/LibraryWriter.java:3667)
   M /openlaszlo/branches/3.4/WEB-INF/lps/server/src/org/openlaszlo/compiler/Main.java
   M /openlaszlo/branches/3.4/WEB-INF/lps/server/src/org/openlaszlo/compiler/NodeModel.java
   M /openlaszlo/branches/3.4/WEB-INF/lps/server/src/org/openlaszlo/compiler/Parser.java
   M /openlaszlo/branches/3.4/WEB-INF/lps/server/src/org/openlaszlo/compiler/ResourceCompiler.java
   M /openlaszlo/branches/3.4/WEB-INF/lps/server/src/org/openlaszlo/compiler/SWFFile.java
   M /openlaszlo/branches/3.4/WEB-INF/lps/server/src/org/openlaszlo/compiler/SWFWriter.java
   M /openlaszlo/branches/3.4/WEB-INF/lps/server/src/org/openlaszlo/compiler/ScriptElementCompiler.java
   M /openlaszlo/branches/3.4/WEB-INF/lps/server/src/org/openlaszlo/compiler/StyleSheetCompiler.java
   M /openlaszlo/branches/3.4/WEB-INF/lps/server/src/org/openlaszlo/compiler/ToplevelCompiler.java
   M /openlaszlo/branches/3.4/WEB-INF/lps/server/src/org/openlaszlo/compiler/ViewCompiler.java
   M /openlaszlo/branches/3.4/WEB-INF/lps/server/src/org/openlaszlo/compiler/ViewSchema.java
   M /openlaszlo/branches/3.4/WEB-INF/lps/server/src/org/openlaszlo/css/CSSHandler.java
   M /openlaszlo/branches/3.4/WEB-INF/lps/server/src/org/openlaszlo/media/Main.java
   M /openlaszlo/branches/3.4/WEB-INF/lps/server/src/org/openlaszlo/sc/Actions.java
   M /openlaszlo/branches/3.4/WEB-INF/lps/server/src/org/openlaszlo/sc/Assembler.java
   M /openlaszlo/branches/3.4/WEB-INF/lps/server/src/org/openlaszlo/sc/CodeGenerator.java
   M /openlaszlo/branches/3.4/WEB-INF/lps/server/src/org/openlaszlo/sc/Compiler.java
   M /openlaszlo/branches/3.4/WEB-INF/lps/server/src/org/openlaszlo/sc/CompilerError.java
   M /openlaszlo/branches/3.4/WEB-INF/lps/server/src/org/openlaszlo/sc/CompilerImplementationError.java
   M /openlaszlo/branches/3.4/WEB-INF/lps/server/src/org/openlaszlo/sc/Function.java
   M /openlaszlo/branches/3.4/WEB-INF/lps/server/src/org/openlaszlo/sc/Instructions.java
   A /openlaszlo/branches/3.4/WEB-INF/lps/server/src/org/openlaszlo/sc/JavascriptCompressor.java (from /openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/sc/JavascriptCompressor.java:3667)
   M /openlaszlo/branches/3.4/WEB-INF/lps/server/src/org/openlaszlo/sc/ReferenceCollector.java
   A /openlaszlo/branches/3.4/WEB-INF/lps/server/src/org/openlaszlo/sc/ScriptClass.java (from /openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/sc/ScriptClass.java:3667)
   M /openlaszlo/branches/3.4/WEB-INF/lps/server/src/org/openlaszlo/server/Configuration.java
   M /openlaszlo/branches/3.4/WEB-INF/lps/server/src/org/openlaszlo/utils/ComparisonMap.java
   M /openlaszlo/branches/3.4/WEB-INF/lps/server/src/org/openlaszlo/utils/FileUtils.java
   M /openlaszlo/branches/3.4/lps/components/lzunit/lzunit.lzx
   M /openlaszlo/branches/3.4/test/smoke/lzunit-test.lzl
   M /openlaszlo/branches/3.4/test/smoke/regression.lzl

Change 20070522-ptw-u by ptw@dueling-banjos.local on 2007-05-22 15:23:30 EDT
    in /Users/ptw/OpenLaszlo/trunk
    for http://svn.openlaszlo.org/openlaszlo/branches/3.4

Summary: Integrate Binary Library feature to 3.4 from trunk

New Features: Binary libraries. See http://wiki.openlaszlo.org/Binary_Libraries

Bugs Fixed:
LPP-3438: 'Implement "binary libraries"'

Technical Reviewer: pablo (pending)
QA Reviewer: sallen (pending)
Doc Reviewer: (pending)

Documentation:
    To create a binary library, you compile the library as:

      lzc -c library.lzx

    This creates a `library.lzo` file in the same directory. Any
    program that includes the `library.lzx` will prefer the .lzo if
    that is found. It is up to your build process to ensure that the
    .lzo file is kept up to date.

Details:
    Merged revisions 3667,3754,3762,3791,3801,3893,3896,3902-3903,3906,3911-3912,3915,3917,3948,3965,3976,3979,4002,4012,4191,4765,4830,4886,4964 via svnmerge from
    http://svn.openlaszlo.org/openlaszlo/trunk

    ........
      r3667 | ptw | 2007-02-05 20:16:51 -0500 (Mon, 05 Feb 2007) | 107 lines

      Change 20070131-ptw-V by ptw@dueling-banjos.local on 2007-01-31 10:59:47 EST
          in /Users/ptw/OpenLaszlo/trunk

      Summary: binary libraries in 3.4

      Bugs Fixed:
      LPP-3438: 'Implement "binary libraries"'

      Technical Reviewer: hminsky (IM 15:10 US/Eastern)
      QA Reviewer: max (Message-ID: <45C7A6D6.10208@openlaszlo.org>)
      Doc Reviewer: sallen (Message-ID: <1313087.1170603354985.JavaMail.sallen@localhost>)

      Documentation:
          To create a binary library, you compile the library as:

            lzc -c library.lzx

          This creates a `library.lzo` file in the same directory. Any
          program that includes the `library.lzx` will prefer the .lzo if
          that is found. It is up to your build process to ensure that the
          .lzo file is kept up to date.

      Details:
          Back-port of this feature to 3.4. As you can see, I hardly had to
          change anything to get it to work in 3.4.

      Detailed details:
          [Changes ported from Legal's are marked with `-`, new changes are
          marked with `+`]

          - lzunit-test: Handle Flash 9 player

          - lzx.rnc: New element <interface> can be used to extend schema,
            script tag can take `when` and `type`.

          + LzLoadQueue: Fix paren-oh that causes smokecheck to fail in swf6.

          - SimpleNode: don't bomb when adding children via set.

          + FileUtils: open .lzo files as GZIP.

          + ComparisonMap: maintain entry order.

          - ReferenceCollector: Eliminate redundant constraints, properly
            express contraints on global functions, sanitize names.

          - Compiler: Unparse super calls

          - Assembler: Correct assoc-oh in block out of range error message.

          + Compiler, CodeGenerator, ToplevelCompiler, SWFFile: Remove Krank
            Kruft

          - Compiler, CodeGenerator: back-port compressing/obfuscating
            unparser, and other miscellaneous compiler improvements.

          + JavascriptCompressor: Adapted from Legal's JavascriptGenerator

          + CompilerError, CompilerImplementationError: Adapt to new
            location string

          + Function: Permit overriding name, maintain source-location info.

          - ScriptClass: Scaffolding for outputting an LZX class as a JS class.

          - LibraryCompiler: Load .lzo (binary) library if available.

          - ClassCompiler: Split out actual generation of class code so it
            can be overridden in a subclass.

          - ViewCompiler, ResourceCompiler, FontCompiler,
            CompilationEnvironment, Compiler: Permit compiling of <library>
            without <canvas>

          + ToplevelCompiler: Compile interfaces, maintain auto-include
            information

          - InterfaceCompiler: Compiles an <interface>, updating the schema.

          + ViewSchema, AttributeSpec, ClassModel: Add toLZX method that
            generates an <interface> from the schema.

          + SWFWriter: open to subclassing

          - LibraryWriter: New compiler back-end, subclass of SWFWriter,
          captures object-code and outputs it to a binary library.

          - CompilationEnvironment: Store object file so back-ends can
            relativize paths.

          + DataCompiler: If not compiling to canvas, defer compiling data.

          + NodeModel: Store methods in class model, use new location format
            for functions, ensure generated method names are unique.

          - ScriptElementCompiler: support `when='immediate'`

          - Compiler, Main: New option '-c' permits compiling a <library> to .lzo.

          - Compiler: Add InterfaceCompiler.

          + ClassModel: Make comparable so classes can be sorted according
            to superclass, add hasNodeModel to tell when a class has had code
            generated for it, maintain class method specifications.

      Tests:
          smoketest, compiled LFC, flasmed and compared to previous -- no change
    ........
      r3754 | hqm | 2007-02-08 17:15:50 -0500 (Thu, 08 Feb 2007) | 23 lines

      Change 20070208-hqm-2 by hqm@IBM-112E6A12815 on 2007-02-08 15:21:36 EST
          in /cygdrive/c/users/hqm/openlaszlo/trunk

      Summary: fixes for inline datasets with binary libraries

      New Features:

      Bugs Fixed: declared datasets were diappearing from library files

      Technical Reviewer: pablo (pending)
      QA Reviewer: (pending)
      Doc Reviewer: (pending)

      Documentation:

      Release Notes:

      Details:

      mods to smokecheck to make smoketest pass


      Tests:
    ........
      r3762 | hqm | 2007-02-09 14:44:48 -0500 (Fri, 09 Feb 2007) | 1 line

      forgot to check this in with fix for datasets
    ........
      r3791 | ptw | 2007-02-11 23:16:55 -0500 (Sun, 11 Feb 2007) | 57 lines

      Change 20070208-ptw-x by ptw@dueling-banjos.local on 2007-02-08 19:29:46 EST
          in /Users/ptw/OpenLaszlo/trunk

      Summary: Binary Library tweaks

      Bugs Fixed:
      LPP-NaN: Compiler chokes if library.lzx does not exist, even if
      library.lzo does
      LPP-NaN: Compiler does not recompile app if library.lzo changes

      Technical Reviewer: henry (pending)
      QA Reviewer: pablo (pending)
      Doc Reviewer: n/a

      Details:
          lzx.rnc: Add private `includes` attribute to `<library>` tag, used
          for binary libraries to record the includes that they included.

          Main, CSSHandler: Remove printStackTrace calls, now that we know about
          --onerror throw

          CompilationManager: add flag for resolving Library files.

          LibraryCompiler, Parser: remove redundant resolveLibraryName,
          process `includes` attribute.

          ToplevelCompiler, SWFWriter: Use new CompilationEnvironment.resolveLibrary
          method, enhance getLibraries to be able to get back the
          auto-include and visited sets.

          LibraryWriter: Learn to write out the `includes` attribute (list
          of all includes that this binary library represents), make
          compression and obfuscation controllable from command line (for
          debugging).

          FileResolver: Add an option to resolve using the 'library rules'
          (if a directory is passed add library.lzx, look for library.lzo
          first).

          CompilationEnvironment: Add new resolveLibrary method, let
          resolveReference take a third argument specifying library
          resolution, default to element being an include element.

          ImportCompiler, Parser: resolve as library.

          Compiler: Pass application file and root element to LibraryWriter.

          StyleSheetCompiler: use environment resolve interface, give
          location info for stylesheet script, ensure stylesheet script is
          emitted as a statement.

          CompilationError: careful about null.

      Tests:
          henry's simple library test
          smokecheck
          pablo's library compiles and loads, but does not run (yet)
    ........
      r3801 | ptw | 2007-02-13 14:51:42 -0500 (Tue, 13 Feb 2007) | 15 lines

      Change 20070213-ptw-Z by ptw@dueling-banjos.local on 2007-02-13 14:10:25 EST
          in /Users/ptw/OpenLaszlo/trunk

      Summary: Handle when in binary libraries

      Technical Reviewer: hminsky (IM 14:40 US/Eastern)
      QA Reviewer: adam (pending)
      Doc Reviewer: n/a

      Details:
          If an attribute overrides it's when value, the interface must
          record it.

      Tests:
          Adam's test appears to work.
    ........
      r3893 | ptw | 2007-02-22 18:33:12 -0500 (Thu, 22 Feb 2007) | 17 lines

      Change 20070210-ptw-k by ptw@dueling-banjos.local on 2007-02-10 17:19:44 EST
          in /Users/ptw/OpenLaszlo/3.4

      Summary: svn merge -r 3748:3749 http://svn.openlaszlo.org/openlaszlo/branches/legals

      Bugs Fixed:
      LPP-2366: 'Fix SWF compiler forward branch bug that keeps appearing'
      LPP-NaN: 'Unknown getURL2 flag: 0x11'
      LPP-NaN: 'FSCommand2. This is a new opcode in FL2 (Flash Lite 2) that is used for all mobile-specific functionality.'

      Technical Reviewer: jgrandy (verbal)
      QA Reviewer: mamye (pending)
      Doc Reviewer: n/a

      Tests:
          smokecheck
          LFC's flasm without error
    ........
      r3896 | ptw | 2007-02-22 18:57:50 -0500 (Thu, 22 Feb 2007) | 15 lines

      Change 20070222-ptw-K by ptw@dueling-banjos.local on 2007-02-22 15:53:31 PST
          in /Users/ptw/OpenLaszlo/3.4.1

      Summary: Be more careful adjusting resource paths

      Technical Reviewer: papley (pending)
      QA Reviewer: pablo (pending)
      Doc Reviewer: n/a

      Details:
          Canonicalize the directories before you try to adjust them, so
          platform-dependencies don't bite you.

      Tests:
          IWFP?
    ........
      r3902 | ptw | 2007-02-23 13:46:25 -0500 (Fri, 23 Feb 2007) | 16 lines

      Change 20070222-ptw-Z by ptw@dueling-banjos.local on 2007-02-22 19:30:50 PST
          in /Users/ptw/OpenLaszlo/3.4.1

      Summary: Don't create the .lzo until you are done

      Technical Reviewer: sallen (over shoulder)
      QA Reviewer: pablo (pending)
      Doc Reviewer: n/a

      Details:
          LibraryWriter: Make sure to use canonical files

          Main: Write the output to a .gz and move it to .lzo when you are done.

      Tests:
          IWFH?
    ........
      r3903 | ptw | 2007-02-23 14:21:43 -0500 (Fri, 23 Feb 2007) | 11 lines

      Change 20070223-ptw-r by ptw@dueling-banjos.local on 2007-02-23 11:19:57 PST
          in /Users/ptw/OpenLaszlo/trunk-clean

      Summary: Revert -r3896 which broke compiling on Windows

      Technical Reviewer: pkang (pending)
      QA Reviewer: n/a
      Doc Reviewer: n/a

      Tests:
          IWFP
    ........
      r3906 | ptw | 2007-02-23 15:02:25 -0500 (Fri, 23 Feb 2007) | 14 lines

      Change 20070223-ptw-9 by ptw@dueling-banjos.local on 2007-02-23 11:53:48 PST
          in /Users/ptw/OpenLaszlo/3.4.1

      Summary: Remove platform path dependency in binary resource resolver

      Technical Reviewer: hminsky (over shoulder)
      QA Reviewer: pkang (pending)
      Doc Reviewer: n/a

      Details:
          Convert paths to URL's before adjusting

      Tests:
          IWFP
    ........
      r3911 | ptw | 2007-02-23 15:43:50 -0500 (Fri, 23 Feb 2007) | 16 lines

      Change 20070223-ptw-q by ptw@dueling-banjos.local on 2007-02-23 12:14:31 PST
          in /Users/ptw/OpenLaszlo/3.4.1

      Summary: Complain if you can't rename the binary to the final output

      Technical Reviewer: hminsky (over shoulder)
      QA Reviewer: pkang (pending)
      Doc Reviewer: n/a

      Details:
          LibraryWriter: Remove erroneous toURL

          Main: Check return codes you dummy

      Tests:
          IWFH?
    ........
      r3912 | ptw | 2007-02-23 16:18:08 -0500 (Fri, 23 Feb 2007) | 16 lines

      Change 20070223-ptw-3 by ptw@dueling-banjos.local on 2007-02-23 13:15:47 PST
          in /Users/ptw/OpenLaszlo/trunk-clean

      Summary: Fix broken compiler assertion

      Technical Reviewer: me
      QA Reviewer: me
      Doc Reviewer: me

      Details:
          Apparently I am the only member of the platform team that runs
          with assertions on, and apparently, I just compiled the first app
          that contains a comma-separated list of expressions.

      Tests:
          No assertions for me!
    ........
      r3915 | ptw | 2007-02-23 17:07:34 -0500 (Fri, 23 Feb 2007) | 14 lines

      Change 20070223-ptw-K by ptw@dueling-banjos.local on 2007-02-23 13:54:24 PST
          in /Users/ptw/OpenLaszlo/3.4.1/diamond/client/framework

      Summary: Output library validate attribute in binary

      Technical Reviewer: hminsky (pending)
      QA Reviewer: pkang (pending)
      Doc Reviewer: n/a

      Details:
          Secret attribute Henry told me about

      Tests:
          IWFH?
    ........
      r3917 | ptw | 2007-02-23 17:55:32 -0500 (Fri, 23 Feb 2007) | 14 lines

      Change 20070223-ptw-W by ptw@dueling-banjos.local on 2007-02-23 14:50:10 PST
          in /Users/ptw/OpenLaszlo/3.4.1

      Summary: Support new "libraries" feature

      Technical Reviewer: hminsky (pending)
      QA Reviewer: pkang (pending)
      Doc Reviewer: (pending)

      Details:
          Allow declaration of libraries

      Tests:
          IWFH?
    ........
      r3948 | ptw | 2007-02-27 12:30:03 -0500 (Tue, 27 Feb 2007) | 21 lines

      Change 20070227-ptw-X by ptw@dueling-banjos.local on 2007-02-27 11:13:24 EST
          in /Users/ptw/OpenLaszlo/3.4.1

      Summary: Add autoincludes to schema only at top level

      Bugs Fixed:
      LPP-3565 'Dashboard has compilation errors'

      Technical Reviewer: hminsky (Message-ID: <8c61fad60702270927r32af6157ob217117d6e488131@mail.gmail.com>)
      QA Reviewer: tyoung (pending)
      Doc Reviewer: n/a (pending)

      Details:
          Move updating of schema for autoincludes out of the Canvas and
          Library compilers up to the top-level compiler. At the top level,
          process the root document for auto-included libraries and amend
          the schema with the library definitions before processing the
          document.

      Tests:
          smokecheck, dashboard, calendar, amazon
    ........
      r3965 | ptw | 2007-02-28 12:15:06 -0500 (Wed, 28 Feb 2007) | 33 lines

      Change 20070227-ptw-9 by ptw@dueling-banjos.local on 2007-02-27 17:33:09 EST
          in /Users/ptw/OpenLaszlo/3.4.1
          for http://svn.openlaszlo.org/openlaszlo/trunk

      Summary: Binary library compiler omits 'external' files

      Bugs Fixed:
      LPP-NaN: 'Pablo not able to compile app library'

      Technical Reviewer: henry (Message-ID: <8c61fad60702280600j30bc7b2eqbeca417601dca4@mail.gmail.com>)
      QA Reviewer: pablo (pending)
      Doc Reviewer: (pending)

      Details:
          ToplevelCompiler: In getLibraries, when not linking, consider all
          'external' includes (meaning includes that are not in the same
          directory or below) to be auto includes. I.e., they will be added
          to the schema but not compiled.

          FileResolver: Consider the case where you are asked to resolve an
          absolute path.

          LibraryWriter: List files that need to be included to load the
          library (i.e., the files that were used to build the schema but
          not compiled because they are 'external').

          Compiler: When not linking, treat 'external' files the same as
          imported libraries (they are added to the schema but not compiled).

      Tests:
          smokecheck, dashboard, amazon, calendar

          binary-compiled mail/libary.lzx and loaded into framework
    ........
      r3976 | ptw | 2007-02-28 14:15:31 -0500 (Wed, 28 Feb 2007) | 19 lines

      Change 20070228-ptw-5 by ptw@dueling-banjos.local on 2007-02-28 14:13:26 EST
          in /Users/ptw/OpenLaszlo/3.4.1
          for http://svn.openlaszlo.org/openlaszlo/trunk

      Summary: Beware null parents

      Bugs Fixed:
      LPP-NaN 'lzc -c recommendation.lzx
      Exception in thread "main" java.lang.NullPointerException'

      Technical Reviewer: hminsky (pending)
      QA Reviewer: pkang (pending)
      Doc Reviewer: n/a

      Details:
          Null parent means "."

      Tests:
          lzc -c recommendation.lzx
    ........
      r3979 | ptw | 2007-02-28 16:17:49 -0500 (Wed, 28 Feb 2007) | 18 lines

      Change 20070228-ptw-D by ptw@dueling-banjos.local on 2007-02-28 16:00:39 EST
          in /Users/ptw/OpenLaszlo/3.4.1
          for http://svn.openlaszlo.org/openlaszlo/trunk

      Summary: Be more careful with pathanmes

      Bugs Fixed:
      LPP-NaN 'C:\laszlo\svn\openlaszlo\trunk\diamond\client\future\lzmail-silver\..\lzmail\..\..\applib\mail\library.lzo: file not found: ../../framework/utils/library.lzx'

      Technical Reviewer: hminsky (pending)
      QA Reviewer: sallen (pending)
      Doc Reviewer: n/a

      Details:
          Use FileResolver rather than File to reconstitute include paths.

      Tests:
          IWFS?
    ........
      r4002 | ptw | 2007-03-01 08:38:56 -0500 (Thu, 01 Mar 2007) | 30 lines

      Change 20070301-ptw-S by ptw@dueling-banjos.local on 2007-03-01 07:43:00 EST
          in /Users/ptw/OpenLaszlo/3.4.1
          for http://svn.openlaszlo.org/openlaszlo/trunk

      Summary: Warn on missing class for tag

      Bugs Fixed:
      LPP-NaN: 'WARNING: ../../applib/mail/library.lzo:1227: reference to undefined variable 'model''

      Technical Reviewer: hminsky (pending)
      QA Reviewer: sallen (pending)
      Doc Reviewer: (pending)

      Details:
          FileUtils: New utility fromURLPath converts an URLPath to a native
          file path.

          LibraryCompiler: Use that to parse binary includes to canonical
          files

          NodeModel: It is an error to try to add attributes to a tag that
          you don't have the ClassModel for (you won't know the types of the
          attributes, and you should _not_ be defaulting them to
          `expression`).

          Compiler: Print warnings to System.err even if you don't have a
          canvas!

      Tests:
          lzc -c library.lzx, amazon, dashboard, calendar, smokecheck
    ........
      r4012 | hqm | 2007-03-01 14:33:26 -0500 (Thu, 01 Mar 2007) | 21 lines

      Change 20070301-daddy-0 by daddy@gigicorp on 2007-03-01 14:31:40 EST
          in /cygdrive/c/users/hqm/openlaszlo/trunk

      Summary: backport fix from legals for security proxy bug

      New Features:

      Bugs Fixed: LPP-3576

      Technical Reviewer: (pending)
      QA Reviewer: (pending)
      Doc Reviewer: (pending)

      Documentation:

      Release Notes:

      Details:


      Tests:
    ........
      r4191 | ptw | 2007-03-09 08:36:37 -0500 (Fri, 09 Mar 2007) | 19 lines

      Change 20070309-ptw-e by ptw@dueling-banjos.local on 2007-03-09 06:06:28 MST
          in /Users/ptw/OpenLaszlo/3.4.1
          for http://svn.openlaszlo.org/openlaszlo/trunk

      Summary: File resolver logic error

      Bugs Fixed:
      LPP-NaN 'library.lzo:143:69: duplicate class definitions ...'

      Technical Reviewer: hminsky (Jabber IM with Henry Q Minsky 06:10 US/Mountain)
      QA Reviewer: pkang (pending)
      Doc Reviewer: n/a

      Details:
          Only extend library directory to file if directory exists

      Tests:
          Pablo's test case (removing skin directory) now signals correct
          error rather than including erroneous library
    ........
      r4765 | ptw | 2007-04-19 12:24:13 -0400 (Thu, 19 Apr 2007) | 20 lines

      Change 20070419-ptw-K by ptw@dueling-banjos.local on 2007-04-19 11:03:35 EDT
          in /Users/ptw/OpenLaszlo/trunk-clean
          for http://svn.openlaszlo.org/openlaszlo/trunk

      Summary: Round-off error in string chunking

      Bugs Fixed:
      LPP-3688 'New xml parsing not working?'

      Technical Reviewer: henry (verbal)
      QA Reviewer: mayme (pending)
      Doc Reviewer: n/a

      Details:
          Round up chunk length

      Tests:
          Test case from bug report
    ........
      r4830 | ptw | 2007-04-26 18:54:54 -0400 (Thu, 26 Apr 2007) | 19 lines

      Change 20070426-ptw-0 by ptw@ebola on 2007-04-26 18:48:47 USEST
          in /home/ptw/OpenLaszlo/trunk
          for http://svn.openlaszlo.org/openlaszlo/trunk

      Summary: Only make undefined resource check when linking

      Technical Reviewer: sallen (verbal)
      QA Reviewer: pablo (pending)
      Doc Reviewer: n/a

      Details:
          Compiler: conditionalize check

          lzc: quote path so spaces don't croak script

      Tests:
          IWFM
    ........
      r4886 | ptw | 2007-05-03 05:54:53 -0400 (Thu, 03 May 2007) | 33 lines

      Change 20070502-ptw-8 by ptw@ebola on 2007-05-02 15:24:43 USEST
          in /home/ptw/OpenLaszlo/trunk
          for http://svn.openlaszlo.org/openlaszlo/trunk

      Summary: Correctly enumerate includes of binary libraries

      Bugs Fixed:
      LPP-3937 'lzmail vs. binary libraries'

      Technical Reviewer: hminsky ([Message-ID: <8c61fad60705021604q3060783cn78eb9f7ba31df88f@mail.gmail.com>)
      QA Reviewer: sallen (pending)
      Doc Reviewer: n/a

      Details:
          LibraryCompiler: Add some logging to monitor include processing

          ToplevelCompiler: Enhance collectReferences to record the includes
          included by each include.

          LibraryWriter: Use that information to not reference included that
          are included by includes you are already including.

          FileResolver: Clean up canonicalization of files when resolving.

      Tests:
          lzc future/lzmail/main.lzx gets further now. Now it stops because
          it can't find an include that _is_ explicitly included, but is not
          built by the `ant build-libraries` task.

          Also, inspected the resulting binary libraries manually and
          verified that they were as should be expected.
    ........
      r4964 | ptw | 2007-05-10 16:14:29 -0400 (Thu, 10 May 2007) | 29 lines

      Change 20070509-ptw-0 by ptw@ebola on 2007-05-09 21:39:53 EDT
          in /home/ptw/OpenLaszlo/trunk
          for http://svn.openlaszlo.org/openlaszlo/trunk

      Summary: Handle explicit includes of binary library sub-components

      Bugs Fixed:
      LPP-3945 "Can't compile a program that tries to explicitly include a sub-component of a binary library"

      Technical Reviewer: henry (Message-ID: <8c61fad60705101305k30b3141ena6178b398c608211@mail.gmail.com>)
      QA Reviewer: pablo (pending)

      Details:
          CompilationManager: Support new getBinaryIncludes interface in
          FileResolver.

          LibraryCompiler: Note binary includes in FileResolver

          FileResolver: Mantain a Set of binary includes and use that set to
          'resolve' files that may not be in the binary distribution,
          avoiding a non-existent file error.

          Parser: Don't try to expand includes that are already implicitly
          included by a binary file.

      Tests:
          lzc of lzmail using only binary libraries gets further now.
    ........

Tests:
    lzc of lzmail using only binary libraries.