forked from emk/halyard
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Release-Notes.txt
executable file
·4917 lines (4080 loc) · 219 KB
/
Release-Notes.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
0.6.0 - 9 Nov 2009
These release notes only cover the difference between 0.5.43 and 0.6.0, and
not the cumulative differences between 0.4.* and 0.6.0. This release
includes a build fix for the UpdateInstaller test suites, several tweaks to
the HACP API to make it more convenient, and support for loading more icon
sizes.
Brian Campbell (1):
UpdateInstaller: Require 'digest/sha1' in tests
Eric Kidd (3):
HACP: Allow hacp-write to be called from a group, and tweak API
hacp: Call current-group-member, not current-card in hacp-write
Add support for more Windows icon sizes
0.5.43 - 2 Nov 2009
This is a bug fix build. It _should_ fix a variety of Quake bugs that
appeared above 100 frames/second (though we will need extensive testing)
and it moves our binary releases of Halyard to a new binary git repository.
Eric Kidd (2):
buildfile.rb: Upload binaries to a different repo
Limit Quake 2 to no more than 100 frames/second
0.5.42 - 20 Oct 2009
This release includes a few more bug fixes which we want to make before
declaring this engine stable. Of particular interest is the new %card%
.focus! method, which can be used to focus the stage on startup.
Eric Kidd (3):
Correctly enable/disable accelerators in full-screen mode
LICENSE.txt: Convert line endings to CRLF for use on Windows
Add %card% .focus! method
0.5.41 - 15 Oct 2009
This release includes just a single fix, to make the use of Tamale as
the user data directory consistent between all Scheme code, by pushing
the code to switch to the Tamale user data directory up into
(script-user-data-directory).
Brian Campbell (2):
Use Tamale user data directory for all script user data access
Fix build failure in Common tests due to calling 'DataPath prim
0.5.40 - 13 Oct 2009
This release includes a few more tools for migrating an installed
program from Tamale to Halyard. We add a stub executable that can
replace Tamale.exe as the target of old shortcuts, which then simply
invokes engine/win32/Halyard.exe with the same arguments. This stub
executable is not part of the normal build and deploy process; it must
be built and deployed manually to projects that need it.
We also add a mode in which we use the Tamale user data directory
instead of the Halyard user data directory, if a Tamale user data
directory is present and the program has requested this, to seamlessly
provide access to all old saved data. You can enable this feature
by create a file named config/USE-TAMALE-DIRECTORY-FOR-USER-PREFS
Brian Campbell (3):
Updater: Add LnkTrampoline project to redirect user with old shortcuts
Updater: LnkTrampoline: Use backslashes when launching engine
data-file.ss: Use Tamale user data directory if specified and exists
0.5.39 - 8 Oct 2009
This release focuses on two areas, the update installer and providing better
native widget support.
The update installer has been taught how to clean up programs which were
installed with the old, pre 0.5 program layout. This involves deleting
any extra files and directories in the PLT search path, as well as
ensuring that the case of files and directories is corrected, as
the filesystem is case insensitive while PLT is not. There have
been a few bug fixes and performance fixes as well.
There are two new native widgets added, %list-box% and an experimental
%pop-up-menu%. Look in elements.ss for documentation on %list-box%.
As %pop-up-menu% is experimental and the interface subject to change,
it is in it's own file "halyard/pop-up-menu.ss" and must be required
manually.
We have also added code signing for our executables, and more importantly
our update installer, so users updating on Vista or newer will get nicer
dialog boxes about updating.
Brian Campbell (15):
Updater: Fix path to re-launch executable
Updater: Fix performance regression in download-update
Updater: Extract superclass of UpdateInstallerTest
Updater: Add test coverage for smarter update installer
Updater: Delete vestigial files in script and collect directories
Updater: Delete vestigial directories in script and collect dirs
Updater: Downcase file and directory names when doing cleanup.
Updater: Add logging when marking updates as impossible
Updater: Fix bug in which we would try to delete non-empty directories
Updater: Rename directories that differ only in case
Updater: Case rename directories even when all files within them change
Updater: Look for executable in various places if we don't find it
Updater: Code review cleanup
Widgets: Build fixes for pop-up-menu.ss
Merge branch 'widgets'
Eric Kidd (4):
buildfile.rb: Sign our binaries when requested
Widgets: Add new %list-box% element
Widgets: Rename selection -> selection-list in %list-box%
Widgets: Add pop-up menu widget
0.5.38.1 - 4 Sep 2009
This is a bugfix release, to fix a problem in which QuickTime media failed to
play when launched in command line or runtime mode.
Brian Campbell (1):
FileSystem: Simplify paths containing . and .. when setting base dirs
0.5.38 - 1 Sep 2009
This release of Halyard substantially improves the updater to no longer
require downloads for files which are already present on the system,
though they may be moved to other locations in the update. This will
allow updating of large programs in which, for example, the media
directory has moved, without having to download all of the media again.
We also fix a bug in which an extra 1-pixel wide light colored border
appeared in full-screen mode, due to the wxAUI art provider.
Brian Campbell (16):
UpdateInstaller: Add unit tests for parsing full manifest
UpdateInstaller: Begin implementing ManifestDiff class
UpdateInstaller: Rename Manifest -> FileSpec, merge ManifestDiff
UpdateInstaller: Change static members to init methods
UpdateInstaller: Add support for copying files from tree to pool
UpdateInstaller: Add notes on model behind new behavior
UpdateInstaller: More notes on model of new behavior
UpdateInstaller: Change init methods back to static members, tweak names
UpdateInstaller: Use boost:unordered_set, _map, and _multimap
UpdateInstaller: Implement file moves, deletes, and copies via the pool
UpdateInstaller: Record current state in todo/updater-update.txt
Updater: Provide stronger guarantees for MANIFEST-DIFF
Updater: Only download files that we do not already have on disk
Updater: Remove vestigial remains of MANIFEST-DIFF
UpdateInstaller: Code review cleanups
Merge branch 'master' of git://github.com/emk/halyard
Eric Kidd (1):
Remove border from stage in full-screen mode
0.5.37 - 28 Aug 2009
This release of Halyard replaces the high-level HACP client with
asynchronous implementation that handles errors internally. It also
includes a new DATA-FILE->HASH-TABLE function which, when given a path,
will load a user preference file in data-file.ss format and convert it to a
hash table. See the commit message for that patch for example code.
Eric Kidd (4):
%easy-url-request%: Add on-transfer-finished callback
HACP: Allow keyword parameters to be passed to %url-request%s
HACP: Rewrite high-level client to run asynchronously
data-file.ss: Export data-file->hash-table for reading old prefs
0.5.36 - 4 Aug 2009
This release of Halyard includes a preliminary implementation of HACP, a
protocol for talking to a "learning management system" via HTTP. It's
similar to SCORM, but it can be used from outside of a browser.
Our HACP implementation has a number of important limitations:
1. It relies on two custom HACP extensions to register new users and
create HACP sessions.
2. It ignores the data returned by HACP GetParam requests.
3. The main API is not yet asynchronous, and the error-handling is
weak.
Basically, we're using HACP as a write-only protocol to report facts about
the user. This implementation is extremely preliminary, and only intended
to support development of Halyard code which uses HACP experimentally.
We also add UUID-generation functions using the review-stage boost::uuid
library. On Windows, these UUIDs are actually generated by Windows. On
other platforms, we rely on potentially predictable random number
generators.
There are also a number of improvements to %easy-url-request% and
subclasses, based on actual use.
Eric Kidd (28):
LICENSE.txt: Add licensing info for boost::uuid
Add a (uuid) function for generating universally unique identifiers
Delete %json-request% elements created during unit tests
Add a %http-post-form-request% to simulate web form submission
%url-request%: Move parameter support to %easy-url-request%
json.ss: Use hash tables instead of "assoc vectors"
%json-request%: Allow HTTP POST requests to return JSON response
HACP: Implement our custom setup extensions
HACP: Implement GetParam request which ignores the response
HACP: Implement PutParam request
HACP: Allow objectives to be written using PutParam request
HACP: Use proper "percent encoding" for keys, values and data
http-test-server.rb: Fix undefined variable errors
HACP: Implement valid-hacp-status? for range-checking
HACP: Add support for setting simple HACP fields
HACP: Add support for setting the status of objectives
HACP: Add placeholder for high-level API
UUID: Add uuid? function for recognizing UUID strings
HACP: Rough in high-level API, and assign UUIDs to users
HACP: Register current user with the server
util.ss: Export make-log-exception-fn
HACP: Create a new HACP session
HACP: Don't raise errors in test server during normal unit testing
HACP: Make initial GetParam request
HACP: Make PutParam requests
HACP: Don't re-register known users
HACP: Do not allow hyphens in auto-generated student IDs
HACP: Send "Lesson_Status" field instead of incorrect "Status" field
Scott McMurray (1):
Import uuid_alt_v13_pod
0.5.35 - 7 July 2009
This version of Halyard fixes many long-standing Z-order, visibility and
cursor-grabbing bugs. To fix these bugs, we replaced our flat C++ element
list with a hierarchy based on the Scheme node hierarchy.
The new behavior is currently turned off by default, although this will
change in the next engine release. In the meantime, you can observe the
new semantics by passing the following parameter to .new:
:has-legacy-z-order-and-visibility? #f
You will want to add the following to the startup code of all existing
Halyard programs:
(require (lib "deprecated.ss" "halyard"))
(set! (compatibility-default 'has-legacy-z-order-and-visibility?) #t)
We strongly recommend against changing this default at the library
level--instead, change the default on a per-program basis. Most libraries
should work correctly in either mode, with the occasional addition of
a :has-legacy-z-order-and-visibility? override.
Here's a summary of what changes when the new features are enabled:
1. Elements are now drawn immediately after their parent node, and not in
order of global creation. Hit-testing has been updated in a similar
fashion.
2. By default, all elements specify ':wants-cursor? #t'. The default
cursor, however, has changed from 'hand to 'inherit, _except_ for
subclasses of %basic-button% and %clickable-zone%. Other
%custom-element% subclasses with mouse-* handlers should be updated
to explicitly set their cursor to something appropriate.
3. Mouse grabbing will now send events to the children of the grabbed
element. Under normal circumstances, these will propagate back up
to the element itself.
4. %element% .raise-to-top! now raises an element above its immediate
siblings, but not necessarily above all other elements on the card.
5. Putting an element into the drag layer should also put all of its
children into the drag layer as well.
6. Calling (set! (elem .shown?) #f) will also make its children
invisible. Calling (set! (elem .shown?) #t) will make the children
visible _only_ if they were visible before.
When upgrading to this new engine, select 'Reset to Default Perspective'
from the 'Window' menu, and you will gain access to a new 'Elements' pane.
This pane shows all currently-active elements. Hidden elements are shown
using grey text.
This engine introduces the new API (find-node-at point), which takes a
point in screen coordinates, and returns the node at that point;
currently, it only returns elements, but if cards or groups become
clickable in the future, may return those.
This engine also includes an important bug-fix for stale event handling,
and some preliminary Linux/wxGTK patches from Robinson.
Brian Campbell (5):
C++ nodes: Bugfix for legacy z-order emulation on group-parented elems
C++ nodes: Use current group member as legacy element parent
Don't mark events as stale if their timestamp equals sMaxStaleTime
C++ nodes: Add FindNodeAt primitive and FIND-NODE-AT function
C++ nodes: Fix sementics of legacy children for current group member
Eric Kidd (59):
Cleanup: Add 'indent-tabs-mode: nil' to fix-prologues.pl
Cleanup: Change C++ prologues to include 'indent-tabs-mode: nil'
Cleanup: Convert tabs to spaces
Cleanup: Modify fix-comments to strip "/////" clutter
Cleanup: Strip "/////" clutter from comments
Cleanup: Add tool for updating brace style
Cleanup: Convert braces to Java style
Merge branch 'cleanup' of [email protected]:emk/halyard
Merge branch 'for-merge' of git://github.com/colonelqubit/halyard
Cairo: Fix text in compile-time error message
gnome-autogen.sh: Look for glibtool on the Mac
gitignore: Ignore libtool-generated files
fix-comments.pl: Modify to strip more "//////////" clutter
Cleanup: Strip top-level "//////////" clutter
ASSERT: Check condition at call site, not in separate function
Doxygen: Run 'doxygen -u' to update Doxyfile
Doxygen: Fix infinite loop when generating API docs
wxAui: Fix incomplete comment found in code review
boost: Upgrade to 1.39.0
C++ nodes: Make Node a superclass of Element
C++ nodes: Modify Wait primitive to look up element like other primitives
C++ nodes: Use BOOST_FOREACH to loop over mElements
C++ nodes: Add a name-to-Node map to Stage
C++ nodes: Replace Stage::FindElement with FindNode
C++ nodes: Convert more mElements loops to use mNodes
Stage: Make our use of dynamic_cast_tag more consistent
C++ nodes: Convert Element addition and removal to support Nodes
C++ nodes: Rename more Stage APIs to refer to Nodes
configure: Require Boost 1.34.0 or later
C++ nodes: Add C++ counterpart to %group-member%
C++ nodes: Add C++ counterpart to %invisible-element%
C++ nodes: Add C++ counterpart to %root-node%
Node: Don't pass inStage to every constructor
C++ nodes: Break Card and CardGroup into separate classes
C++ nodes: Implement Node::GetParent()
C++ nodes: Implement Node::(RegisterWith|UnregisterFrom)Parent
configure: Require Boost 1.38.0
Elements pane: Add a primitive "Elements" pane
Elements pane: Use "display names" for nodes
Elements pane: Expand GroupMembers automatically
Elements pane: Display icons for nodes
Elements pane: Display italic class names for anonymous nodes
Elements pane: Show the names of hidden nodes in grey
Bug fix: Elements pane: Base event table on correct class
Elements pane: Only update when visible
C++ nodes: Keep track of legacy Z-order relationships
C++ nodes: Composite using new Z-order code
C++ nodes: Make mouse grabbing use LightweightElement explicitly
C++ nodes: Hit-test using new Z-order code
C++ nodes: "Raise to top" using new Z-order semantics
C++ nodes: Add demo code and instructions for planned features
C++ nodes: Remove useless Element::GetCursorName() function
C++ nodes: Tweak cursor handling for new Z-order semantics
C++ nodes: Send mouse-(enter|leave) to children of grabbed element
C++ nodes: Reorganize Node.h and break into sections
C++ nodes: Reorganize Element.h and break into sections
C++ nodes: Try to detect leaked Node objects
C++ nodes: Hide and show elements using new Z-order semantics
C++ nodes: Allow default z-order semantics to be changed
Robinson Tryon (6):
autotools: Look for BOOST_PRG_EXEC instead of BOOST_TEST_EXEC
Make HalyardCheckAssertion inTest an unsigned long
FileSystem: Use proper syntax to declare operator== friend
/m4: Pick correct mzscheme libs based on $ac_mzscheme_want_precise_gc
TValue: Make template specializations in the proper namespace
HalyardEventLoop: Make __WXGTK__ builds use the standard loop
0.5.34 - 12 June 2009
This release significantly improves the Halyard developer GUI in a number
of long-overdue ways:
1) We now support creating new Halyard-based programs from the GUI.
2) The "Recent Programs" list finally works.
3) We have an icon on the Macintosh.
4) Halyard's old SashFrame class has been replaced by a new AUI-based
GUI, complete with dockable palettes.
5) The listener's focus and scrolling behavior has been improved
significantly.
6) We now have a "Media Info" palette which shows the path and timecode
of whatever element the script is waiting on. This is experimental,
and will be refined further in future releases.
This release also includes a few compilation fixes for recent Ubuntu
versions of GCC. It probably wouldn't be too hard to get a very primitive
Linux port of Halyard running if anybody is interested.
This release introduces a new function in the unit test API,
RUNNING-ALL-TESTS?, which specifies if we are currently running
through our unit test sequence.
Brian Campbell (3):
Cairo: Remove warning for drawing 0-area rectangle outline
Merge branch 'autogen-update' of [email protected]:lambda/halyard
Halyard.sln: Don't build unnecessary projects in Libraries phase
Christian Persch (2):
autogen: Add -Wno-portability to automake invocation. Bug #529120...
autogen: Support for automake 1.11
Eric Kidd (26):
StartupDlg: Implement "recent files" list
ScriptEditor: Only scan for identifiers in source directories
StartupDlg: Implement "new program" radio button
Stage: Factor common code out of OpenDocument, NewDocument
StartupDlg: Rename mRecentFiles -> mHistory
Stage: Factor out AddFileToHistory calls
Reorganize .gitignore and add .DS_Store
Mac: Add application icon and Info.plist
wxAui: Convert StageFrame to use wxAui
wxAui: Convert ScriptEditor to use wxAui
wxAui: Reduce minimum window size for ScriptEditor
wxAui: Bug fix: Remove extra CreateToolBar call
wxAui: Save and restore frame sizes
DocNotebook: Make a note of a long-standing Mac bug
wxAui: Remove obsolete "TODO AUI" comment
Mac: Make CFBundleExecutable name uppercase
Remove ancient timecoder demo
wxAui: Convert Listener to use wxAui
wxAui: Tweak Listener behavior on Windows
ProgramTree: Get rid of useless "Cards" node
Merge branch 'aui' of [email protected]:emk/halyard
wxAui: Allow user to reset frame perspective to default
Bug fix: Cairo: Fix TransformRectToUnitSquare regressions
wxAui: Add a "Media Info" pane with paths & timecodes
Revert "HalyardCheckAssertion: Correct type of inTest to bool"
wxAui: Fine-tune spacing of "Media Info" palette
Robinson Tryon (11):
HACKING.txt: Clarify win32 build instructions
Remove unneeded declaration of Halyard::TStateDB
HalyardCheckAssertion: Correct type of inTest to bool
Include string.h explicitly when using strncpy
Remove extra specifier from ~StyleRep()
Make #endif lines use proper syntax
Change default values to have correct wxString type
Unit tests: Create/provide function running-all-tests?
/bugs: Add card /bugs/bug-f12767-measure-text-space-before-newline
/m4: Update ax_boost_unit_test_framework.m4 to the latest version
/m4: Update ax_boost_test_exec_monitor.m4 to the latest version
Rodney Dawes (1):
autogen: Only pass --enable-maintainer-mode when AM_MAINTAINER_MODE is...
0.5.33 - 4 June 2009
This release introduces a few more performance optimizations. At this
point, we believe that we are doing no unnecessary primitive calls for
basic element creation, and that primitive call overhead is no longer
the bottleneck. Since release 0.5.30.1, we have improved performance on
element creation by a factor of around 3, and on primitive call overhead
by a factor of around 20.
This release updates draw-text and draw-graphic to return the bounding
box of the item drawn. This can help DRAW methods avoid an extra
primitive call to measure text or a graphic.
Brian Campbell (3):
Performance: Remove extra primitive call to WakeUpIfNecessary
Performance: Only call StateDbUnregisterListeners if we have listeners
Performance: Disable trace logging for primitives
Eric Kidd (4):
Bug fix: Only expand WITH-DC argument once
Performance: Return bounding box from draw-text and draw-graphic
Don't build log messages for primitives if we don't need them
Merge branch 'master' of ssh://imlsrc.dartmouth.edu/var/lib/git/halyard
0.5.32 - 2 June 2009
In this release, we replace Halyard's offscreen drawing routines with
Cairo. Cairo is a fast, portable 2D graphics library, used by Firefox,
Gnome and many other open source projects.
We're merging the Cairo branch slightly ahead of schedule, because we're
in the middle of performance tuning, and Cairo appears to be
significantly faster than our old drawing code for at least one
operation (drawing rectangles in transparent overlays), and potentially
faster for a few other common operations.
Here is some data from the /benchmarking card. All times are in
microseconds, and numbers are accurate to the nearest 100 microseconds
or so. These benchmarks were performed in a Parallels VM on a year-old
MacBook Pro, and Halyard was compiled in Release mode.
Before Cairo
a. Clear opaque overlay 462 260
b. Fill opaque overlay 500 280
c. Clear alpha overlay 380 280
d. Fill alpha overlay 1982 382
e. Draw graphic 802 742
f. Mask 702 822
g. Draw text 1022 1120
h. Measure text 922 842
Operations (a)-(c) appear to be faster, although the improvement is near
the margin of error. Operation (d) has improved enormously (and
consistently, across many benchmarking trials). Other operations are at
or near the margin of error, with slight performance decreases in (f)
and (g). These latter two could very well be real--there are
non-trivial code changes on both paths. But as the values of (a) and
(c) in the first column show, equivalent operations can vary by a
hundred microseconds or so.
This release fixes several long-standing drawing bugs, and adds several
new APIs.
* Bug fix: Diagonal lines now work on transparent overlays
* Bug fix: Opaque images now on transparent overlays
Now that we're using Cairo for offscreen drawing, we can support all
drawing operations on transparent overlays. This means no more "image
with a single transparent pixel" hacks.
* New: draw-oval and draw-oval-outline
This version of Halyard includes two new drawing primitives. Note that,
in general, we don't intend to export a large number of these
special-purpose primitives. Instead, we hope to export Cairo's more
flexible API, which can draw a wide variety of images using a relatively
small set of functions.
* New: %graphic% now takes :scale, :scale-x and :scale-y parameters
* New: draw-graphic and measure-graphic now take :scale-x and :scale-y
parameters
On an experimental basis, we're now exposing the ability to resize
images. These parameters are floating point numbers, relative to a
scale 1.0. In the future, we _may_ decide to move the scale parameters
from %graphic% to %custom-element%.
Eric Kidd (33):
DrawingArea: Add basic Cairo support
DrawingArea: Add support for DRAW-OVAL and DRAW-OVAL-OUTLINE
DrawingArea: Factor common code into CairoContext
DrawingArea: Draw rectangles using Cairo primitives
Add example code for diagonal lines
DrawingArea: Draw lines using Cairo
DrawingArea: Clear DrawingArea using Cairo
DrawingArea: Draw letters using Cairo
DrawingArea: Rename CairoContext::GetSurface -> CreateSurface
BREAKS WIN32: DrawingArea: Re-implement Mask using Cairo
DrawingArea: Delete DrawingAreaOpt.{h,cpp}
BREAKS WIN32: DrawingArea: Draw bitmaps using Cairo
Remove last vestigial support for _INCR_X, etc.
DrawingArea: Add scaling to DRAW-GRAPHIC
DrawingArea: Move CairoContext into a separate file
pixman: Put pixman.lib into pixman build directory
DrawingArea: Factor out bitmap measuring code
BREAKS WIN32: DrawingArea: Composite onto stage using Cairo
Stage: Use Cairo to manage clipping regions
Cairo: Create a CairoSurfacePtr class
Cairo: Extract CairoBitmapContext from CairoContext
BREAKS MAC: DrawingArea: Use a cairo_image_surface instead of a wxBitmap
Cairo: Include error strings in error messages
FIXES MAC & WIN32: ImageCache: Store loaded images as Cairo surfaces
Rename (graphic|surface) -> image in ImageCache, DrawingArea APIs
Clean up *Pic primitives.
Stage: Clear path after setting up clip
Make splash screen copyright text more attractive
Benchmark: Allow (benchmark ...) form to appear anywhere
Benchmark: Add benchmarks for simple drawing calls
Merge branch 'cairo' of ssh://imlsrc.dartmouth.edu/var/lib/git/halyard
DrawingArea: Do not try to fill 0-area shapes
Merge branch 'v0.5.31-fix' of ssh://imlsrc.dartmouth.edu/var/lib/git/halya
0.5.31.1 - 2 June 2009
This release fixes a regression introduced by the previous release.
Brian Campbell (1):
Bug fix: Initialize :shown? on %custom-element% correctly
0.5.31 - 1 June 2009
This release introduces a number of simple performance optimizations.
Element creating has always been slow, so we have done some
benchmarking, and discovered several quick and easy performance
optimizations that buy us a good deal of extra performance. We also
expose a bit more of our benchmarking to Halyard programs, so we
can more easily compare the differences in performance depending on
the size of the program we're running or other factors affected by
the program (like monkey patching).
In order to set up engine nodes, such as setting their in-drag-layer?
and shown? properties, after they have been created, we have created a
new method that is overridable on nodes,
.FINISH-INITIALIZING-ENGINE-NODE. This is called after
.CREATE-ENGINE-NODE, to allow further initialization to be overridden
separately.
Brian Campbell (5):
kernel.ss: Cache results of have-prim?
nodes.ss: Cache node .full-name computation
Move Halyard benchmarks from test into runtime
Add Noop and UntracedNoop primitives for benchmarking
Performance: Don't set element parameters to default values on setup
0.5.30.1 - 27 May 2009
This release is a build fix for 0.5.30, which did not have all of the
build dependencise listed and thus could not be reproducably built.
Brian Campbell (2):
Build fix: Remove unnecessary libraries from PLT build step
Build fix: add extra dependencies to wxRC
0.5.30 - 26 May 2009
This release upgrades the engine to be able to run on top of wxWidgets
2.9 RC 3, while maintaining compatibility with wxWidgets 2.8 for the
Mac build. We updated wx and wxIE to their latest versions, and
forward ported our patches to apply to them. We also have also sent
some of these patches upstream, in the hope that we will no longer
have to maintain them separately. We also did some more Unicode
cleanup in order to build against the new wxWidgets.
Things to look out for, that may have broken or changed; we have tested
most of these things, but there may be corner cases that were missed:
- Keyboard commands. We fixed a few bugs with keyboard commands such
as the escape key, but there may be something we missed.
- Text entry widgets, and other native controls.
- Performance. We have not noticed any performance regressions, but
it would be good to be on the lookout.
- The script editor.
The patches below marked as BROKEN mean that the build was broken, the
program would not launch, or the program had significant crashing bugs
at that stage of the porting process. We have allowed these to remain
in the history to document the upgrade process, but marked as BROKEN so
we can avoid them when bisecting history and the like.
Brian Campbell (5):
BROKEN: Port to wx 2.9
BROKEN: wxIE: Re-apply constructor race fix to wxactivex.cpp
BROKEN: wxIE: Port our interface changes forward
BROKEN: Add more required wxWidgets projects and update dependencies
BROKEN: Override wxGUIAppTraits to install custom event loop in wx 2.9
Eric Kidd (16):
BROKEN: Update Quake 2 for wxWidgets 2.9
BROKEN: Fix custom build using wxrc.exe
BROKEN: Organize projects into folders
BROKEN: wxWidgets: Use non-DLL C runtime
BROKEN: Remove unusued Halyard.sln configurations
BROKEN: Replace wxIE with new version from wxPython
Fix cross-fade crash using wxMemoryDC::SelectObjectAsSource
Mac build fix: Explicitly convert "About" text to Unicode
ScriptEditor: Replace irregular use of L"..." with wxT("...")
wxWidgets: Ignore build byproducts and Emacs backup files
ScriptEditor: Always use standard syntax highlighting
ScriptEditor: Reapply our FindText patch
Remove deprecated wxWidgets 2.6 APIs
ScriptEditor: Fix indentation, etc., for square brackets
ScriptEditor: Properly handle enter key in find dialog
Stage: Intercept Escape manually if menu accelerator fails
0.5.29.1 - 18 May 2009
This release fixes a build regression in the previous release. When we
upgraded to Windows SDK 6.1, we hadn't tested the PLT build process,
which wound up failing.
Brian Campbell (1):
Build fix: libs/plt
0.5.29 - 23 April 2009
This is the first official build with the Electric Gibbon branch
merged; Electric Gibbon is a new testing tool for simulating clicks on
elements while jumping to each card. See the release notes for the
Electric Gibbon branch releases for details.
This release adds the %url-request% class and subclasses, to support
communicating over HTTP asynchronously from Scheme, including GET and
POST requests that send and parse JSON. Support for proxies is
incomplete in this release. This is a work in progress; the API is
not yet stable.
This release updates the primitive logging machinery. Primitives are
now logged along with their arguments before they are executed, to let
you tell what primitive was called before a crash occurred. They are
also logged after the primitive returns, to show the return value.
Brian Campbell (10):
Installer: Pass "." as argument in shortcuts instead of full path
TPrimitives: Move formatting of strings and booleans into TValue
TPrimitives: Remove TArgumentList::GetListArg() and corresponding
operator>>
TPrimitives: Suppres noisy primitive logging using log4cplus
TPrimitives: Suppress logging of fewer primitive calls
TPrimitives: Move all operator>> declarations to one place
TPrimitives: Log prim calls before and after they are executed
TPrimitives: Remove unused int16 version of operator>>
TPrimitives: Factor out many formulaic operator>> functions with a
template
TPrimitives: Reverse direction of >>> and <<< when logging primitives
Eric Kidd (28):
eg: Make infinite loops result in non-fatal errors
TLogger::ConsoleAlert: Display "WARN:", not "WARNING:"
Allow unrestricted access to the network
Upgrade to libcurl v7.19.4
Add asynchronous %url-request% element
%url-request%: Properly clean up engine element
%url-request%: Make changes suggested in code review
Add more trace statements for elements and %url-request%
%url-request%: Report HTTP status >= 400 as a failed transfer
Mac: Require libcurl v7.19.3
%url-request%: Add HTTP POST support
%url-request%: Add support for getting the response Content-Type
%url-request%: Add support for sending 'Accept' header
EventDispatcher: Fix argument name for DoEventProgressChanged
/features/browser: Extract %progress-bar% class
%url-request%: Implement progress events
%url-request%: Make %easy-url-request% part of the official API
%url-request%: Rename .success? -> .succeeded?
json: Implement %json-request%
json: Send "Accept: application/json" with JSON requests
json: Merge most of %json-request% into %easy-url-request%
%curl-request%: Add stub function for configuring proxy servers
Update to Windows SDK v6.1
proxy: Query for IE settings and log
proxy: Fix boolean casting warning
proxy: Assume ":" and "::" in proxy or proxy_bypass mean "no proxy"
proxy: Honor proxy, but ignore proxy_bypass for now
Merge branch 'master' of git://github.com/lambda/halyard
Tony Garnock-Jones (1):
json: Import 3rd-party JSON library
0.5.28-gibbon6 - 25 March 2009
This release adds a number of enhancements to Electric Gibbon, including
support for using release engines with halyard:jump_each:test, support for
catching multiple Halyard errors in a single test run, and support for
detecting certain kinds of infinite loops during halyard:jump_each:test.
Detecting multiple Halyard errors required us to add Yet Another Logging
hack. Since the old TLogger code was about 20% archaic code, and about 80%
festering hacks, we refactored it into something cleaner and started using
log4cplus for the actual output. The new code is very shiny, but alas, we
had to add one last tiny hack to get the our new features working anyway.
If your halyard:jump_each:test runs are taking way too long, try:
rake halyard:jump_each:test MODE=release
PORTING NOTES:
- Remove config/developer.prefs and decide whether to use
ENABLE-DEVELOPER-TOOLS-IN-ALL-MODES!.
- All of the old logging functions are deprecated, though they should
still be fully supported by deprecated.ss. I'll be putting up a wiki
page explaining the new logging functions and levels shortly.
Brian Campbell (2):
Mac build fix: Cast to uint32 when setting /system/clock/milliseconds
log: Remove redundant (cat ...) statements from nodes.ss
Eric Kidd (42):
log: Combine gLog and gDebugLog into unified logging API
log: Remove environment-error
log: Remove TLog mask support
log: Fix comment in TPrimitives.h
log: Replace WITH-ERRORS-BLOCKED with WITH-EXCEPTIONS-BLOCKED
log: Promote expensive event logging to a debug message
log: Mac build fix: Add abort() to TLogger::Fatal
log: Move static functions from TLog to TLogger
Merge branch 'master' of ssh://imlsrc.dartmouth.edu/var/lib/git/halyard in
log: Move TLog into its own file
log: Move vsnprintf (and buffer) into TLogger
log: Add LevelFromString and LevelToString functions
log: Move warning inteception code to TLogger
log: Reorder TLog::Warning and TLog::Error
log: Bug fix: Use correct level for LOG-ERROR and FATAL
log: Move alert-display code into TLogger
log: Move ExitWithError into TLogger
log: Make level-based conditionals simpler
log: Get rid of level-specific functions in TLog
log: Move trace messages into new Trace.log
log: Log loader/stage2 progress at level TRACE
log: Log user-initiated events, etc., at level DEBUG
log: Test fix: Remove remaining debug-log references
log: Log "unexpected errno" at level TRACE
log: Add rudimentary log4cplus support
log: Move log4cplus configuration to external file
Add a SetEnvVar function
Add FileSystem::Path::operator/
log: Configure log4cplus using an external properties file
log: Add __declspec(noreturn) to TLogger::Fatal
log: Remove old TLog class
log: Clean up log4cplus initialization
log: Register log files with CrashReporter
log: Ignore rolled-over log files in Common/test
log: Shrink log file sizes considerably
log: Log command-line-error at level DEBUG
Remove TDeveloperPrefs
halyard/test: Allow users to switch from RUNTIME to AUTHORING mode
eg: Clean up "New:" lines in output
eg: Try to avoid infinite loops when replaying actions
eg: Report multiple errors from a single run of jump_each
eg: Allow the use of release *.exe with jump_each
0.5.28-gibbon5 - 18 March 2009
The previous implementation of %deep-test-planner% had a number of issues
which were missed in 0.5.28-gibbon4, mostly because the code was such a
snarl. In this version, rerunning actions to return to a previously known
state should work much more consistently.
Eric Kidd (1):
eg: Refactor %test-planner% for clarity and fix bugs
0.5.28-gibbon4 - 18 March 2009
Electric Gibbon can now update its test plan to include actions that
only become available once other actions have been performed. This
required porting our event API from Swindle to Mizzen (although we do
have a reasonably good backwards compatibility layer).
Eric Kidd (11):
eg: Add unit tests for Swindle-based events API
eg: Reimplement events using Mizzen instead of Swindle
eg: Only generate test-actions if .supports-user-interaction? is true
eg: Generate real events, not just .click
eg: Move run-next-test-action to %test-planner%
eg: Code review: Add documentation for events.ss
eg: Run test actions hidden behind other test actions
eg: Don't include any more of srfi/1 than necessary
eg: Merge test action HOVER into CLICK
eg: Print "Repeating" when returning to a card
eg: Code review: Reorder %deep-test-planner% and add comments
0.5.28-gibbon3 - 10 March 2009
We're currently running Electric Gibbon heavily against in-house projects.
Here's a small bug fix to make it stop clicking on invisible buttons.
Eric Kidd (1):
eg: Don't click on elements with :shown? #f
0.5.28-gibbon2 - 5 March 2009
This release changes the interface for invoking jump_each:
rake halyard:jump_each [START=/card/name] # Jump to each card.
rake halyard:jump_each:test [START=/card/name] # Jump to each and test.
This allows existing programs to keep calling an old-fashioned 'jump_each'.
Eric Kidd (4):
eg: Split %test-planner% into %(null|shallow)-test-planner%
eg: Only run test actions when halyard:jump_each:test called
eg: Add START parameter to halyard:jump_each tasks
eg: Code review: Add missing word to comment
0.5.28-gibbon1 - 4 March 2009
This release contains some buildscript improvements by Brian, and a
substantial amount of work towards an "Electric Gibbon" stress-testing
tool that allows 'rake halyard:jump_each' to click on buttons.
Porting notes:
* Please do not use (gensym) to generate names for anonymous elements.
Instead, please pass ':name #f' and let Halyard generate a name. Pay
careful attention to new-FOO functions that wrap (%FOO% .new ...),
which tend to be the major offenders.
Brian Campbell (10):
tools: Add announce-build.sh tool for emailing build announcements
tools: Add announce-build-freshmeat.rb for pinging freshmeat
tools: Add irc announce bot, for announcing a build on IRC
fix-prologues.pl: Put correct comment in .rake and Rakefiles
tools: Add GPL headers to announce scripts
tools: Fix permissions on announce scripts
tools: Move #! lines back to beginning of files
announce-build-freshmeat.rb: Don't print responses unless -v or --dry-run
Buildscript: Add tool for staging and releasing updates on server
eg: Comment fixes following code review
Eric Kidd (27):
halyard.el: Indent backwards-compatibility APIs properly
eg: Initial files for Electric Gibbon test tool
eg: Implement a primitive TEST-ACTION form
eg: Allow test actions to be created manually
eg: Recurse over child elements when listing test actions
eg: Look for elements on groups, too
eg: Document public APIs
eg: Add a test-action for %clickable-zone%
eg: Remove unused eq-with-gensym? hack
eg: Centralizing (gensym) calls for anonymous elements
eg: Make anonymous element names semi-stable
eg: Add %test-action% .key method
eg: Issue a warning about gensym'd node names
eg: Add extremely primitive test planner
eg: Test %test-planner% with an actual set of actions
eg: Add support for resuming a test where we left off
eg: Remember what card a %test-planner% is associated with
eg: Document %test-planner%
eg: Add %test-planner% .done?
eg: Don't generate test actions for disabled elements
eg: Integrate Electric Gibbon into halyard:jump_each
eg: Improve halyard:jump_each output
eg: Drain deferred thunk queue after each action
eg: Remove delays during jump_each
eg: Add :skip-when-testing-card? flag to %element%
eg: Don't open browser when running jump_each on halyard/test
eg: Code review: Rename :skip-when-testing-card? -> :skip-test-actions?
0.5.28 - 25 Feb 2009
The only engine change in this release is to remove a few messages
that the crash reporters logs to the debug log, which were obscuring
the underlying message in the report title.
This release also includes several build script changes. We had
tagged 0.5.27 before updating the build scripts, so this release
contains the build script changes we used to build 0.5.27. In
addition, we have added a command to buildscript/commands.rb to
allow projects to check out and tag from Git.
Brian Campbell (10):
Convert .rake files from DOS to Unix line endings
freeze.rake: Fix ignore regexp for Emacs backup files
buildfile.rb: Push engine binaries to Git repository
buildfile.rb: Don't use git clone --no-checkout
buildfile.rb: Pull and push from Git via ssh: URLs, not git:
buildfile.rb: Remove Subversion support
HACKING.txt: remove outdated instructions, and mention modern layout
buildscript: README.txt fixes
buildscript: commands.rb: Add command for cloning from Git
Crash reporter: Remove message about finding curl.exe
0.5.27 - 17 Feb 2009
This release reorganizes the support files used by the installer and the
updater. In particular, 3rd-party binary files are expected to live in
binaries/, and configuration files now live in config/.
Eric Kidd (10):
Replace test/buildfile.rb with one from a modern project
reorg: Expect QuickTime support files in binaries/
reorg: Expect GnuPG files in binaries/
reorg: Expect curl in binaries/
reorg: Move trustedkeys.gpg to config/
Explain why moving AUTO-UPDATE is tricky
reorg: Move TRUST-PRECOMPILED to config/
reorg: Move Autorun.inf to config/
Include VP3 source code in installer
Merge branch 'master' into reorg
0.5.26 - 6 Feb 2009
This release fixes several broken pieces related to the update
installer. When we did the reorg to put the executables into runtime,
which is deployed to engine/win32, we did not update everything else
to match. This release adds UpdateInstaller.exe to the list of
binaries released to our programs, fixes various units tests and adds
them to the main 'rake test' task, and updates the installer to
install UpdateInstaller.exe to the place the updater expects it.
Brian Campbell (6):
.gitignore: Ignore doc directory
UpdateInstaller: Point unit tests to runtime instead of Win32/Bin
Rakefile: Call UpdateInstaller and buildscript tests during 'rake test'
buildfile.rb: Add UpdateInstaller.exe to list of released binaries
Installer: Fix installer rake task to point to windows-installer-final.iss
Installer: Always install UpdateInstaller.exe in program root
0.5.25 - 5 Feb 2009
We're getting ready for an alpha release of one of our in-house programs,
so it's time to update the copyrights and license information, and fix
some bitrot in the installers and build system.
This release also modifies Quake 2 to stop writing automatic save files and
configuration data to disk.
Brian Campbell (5):
Updated buildscript to latest version
Updated buildscript to latest version
Rakefile: updated 'sign' task to refer to current engine location
Installer: Include On2_VP3.qtx again
Merge branch 'master' of ssh://imlsrc.dartmouth.edu/var/lib/git/halyard
Eric Kidd (6):
Quake 2: Don't write configuration or auto-saved games to disk
Merge branch 'master' of ssh://imlsrc.dartmouth.edu/var/lib/git/halyard
fix-prologues.pl: Update for 2009 and extend to *.rb files
Update copyrights to 2009
Don't use windows-installer.iss for all versions of *.iss file
LICENSE.txt: Update for 2009 and latest changes
0.5.24 - 9 Jan 2009
This is a minor release fixing a couple of installer-related issues.
Eric Kidd (2):
Add qtcheck.dll to list of files in a binary release
Fix path for the updater icon
0.5.23 - 23 Dec 2008
This release includes a new, standardized system for building installers
for Halyard applications. Just copy config/windows-installer.iss from
halyard/test, customize it for your program, and run: