Changelog:
All platforms:
MAJOR CHANGE: All platforms now use a uniform graphical user
interface, based on the wxWidgets library. A very simple editor
is part of the package, no more external editor. This GUI is,
so far, rather primitive, but provides a framework that should
allow for many improvements relatively soon. There is a single
Logo window that can be in fullscreen, splitscreen, or textscreen
mode, like traditional Logo versions.
INCOMPATIBLE CHANGE: RGB color lists, as used by PALETTE,
SETPALETTE, etc., now take integer or non-integer values between
0 and 100 rather than integers between 0 and 65535. I don't like
incompatible changes, but having now actually tried teaching kids
with Berkeley Logo, I've learned that they have trouble understanding
the old system; their colors all come out near-black.
New commands PRINTPICT and PRINTTEXT to print the graphics and
text screens, respectively. If called with an argument (in
parentheses), they print preview instead. (wxWidgets only)
New commands INCREASEFONT and DECREASEFONT to make the text window
font one size bigger or smaller, SETTEXTSIZE to set the absolute
size, SETLABELHEIGHT to adjust graphics-window text size, and
SETFONT to set the font name for all windows. (wxWidgets only)
SETTEXTCOLOR (SETTC) command, formerly just in DOS version, works
on all platforms. It takes two color number or RGB lists as inputs,
first the text color, then the text background color. (wxWidgets only)
New command FILLED takes two arguments, a color and an instruction
list. The instructions should draw a simple closed curve (but if
not closed, FILLED will add a turtle move back to the starting
point). The instructions are carried out, and then the area
enclosed by the curve is filled using the given color, regardless
of other lines that might intersect that area. (wxWidgets only)
Special variable BUTTONACT, if defined and nonempty, is an instruction
list to be run when the user presses a mouse button. Special variable
KEYACT, if ditto, is to be run when the user presses a key on the
keyboard. It is the responsibility of the user code to handle the
problem of a second mouse/keypress during the running of these
instructions. New operation CLICKPOS outputs the position of the
mouse at the moment when the mouse button was pressed. BUTTON
outputs which button was most recently pressed, or zero if no button
was pressed since the last call to BUTTON. (BUTTONP still reflects
the actual current button status.) (wxWidgets only)
The workspace management procedures (PO, TEXT, HELP, etc.) look
in the library before deciding whether the name you give exists
as a procedure or not, just the way running the procedure does.
This is an incompatible change!
The procedure formerly named BACKSLASHEDP or BACKSLASHED? is now
called VBARREDP or VBARRED?, to reflect a longstanding change in
its meaning. The old names are retained in the Logo library for
backward compatibility.
A command line argument consisting of just a hyphen means that all
following command line arguments should be collected in a list,
instead of taken as filenames to load. The list can be seen in
the buried variable :COMMAND.LINE
Logo looks in its library directory (e.g., /usr/local/lib/logo/logolib)
for a file startup.lg, and runs it if found, before looking in the
user's current directory for startup.lg and running that.
A vertical bar that comes after a semicolon doesn't require a
matching vertical bar to end the line.
Fixed a garbage collector bug (although I don't know why it was
a bug, alas).
The buffer for saving pictures (for SAVEPICT and EPSPICT and for
restoring the graphics window after it's hidden) has no size limit.
INVOKE is a macro, so (INVOKE [IF ? < 0 [OUTPUT "NEGATIVE]] :X)
will output from the caller, rather than from INVOKE.
Improved error message "Runlist %s has more than one expression"
for the case of a macro seen where an expression (that outputs a
value) is needed: PRINT RUN [PRINT "A PRINT "B].
One-pixel moves from drawing turtle aren't saved in SAVEPICT buffer.
(1 2 3) gives error message instead of blowing up.
PRINT [~] (bracket after tilde) works (no line continuation).
The check for END inside a multi-line instruction is correctly
internationalized.
APPLY [[][]] [] no longer crashes.
APPLY copies the arg list, so the original list can't be modified
by changes to the inputs (e.g., after an error).
Better error message (don't know how) for too much inside parens
and also the first one isn't a procedure name.
Better error message for STOP or OUTPUT during a PAUSE.
Fixed bug crashing backquote (`) in case of `[[,[...] ...]]
Fixed bug giving "out of bounds" message for line just on screen edge.
Fixed bug that ignored TEST outside of a procedure.
Turtle is invisible during drawing (to speed it up).
developer is officially maintaining the package.
The rationale for changing this from "tech-pkg" to "pkgsrc-users" is
that it implies that any user can try to maintain the package (by
submitting patches to the mailing list). Since the folks most likely
to care about the package are the folks that want to use it or are
already using it, this would leverage the energy of users who aren't
developers.
Several changes are involved since they are all interrelated. These
changes affect about 1000 files.
The first major change is rewriting bsd.builtin.mk as well as all of
the builtin.mk files to follow the new example in bsd.builtin.mk.
The loop to include all of the builtin.mk files needed by the package
is moved from bsd.builtin.mk and into bsd.buildlink3.mk. bsd.builtin.mk
is now included by each of the individual builtin.mk files and provides
some common logic for all of the builtin.mk files. Currently, this
includes the computation for whether the native or pkgsrc version of
the package is preferred. This causes USE_BUILTIN.* to be correctly
set when one builtin.mk file includes another.
The second major change is teach the builtin.mk files to consider
files under ${LOCALBASE} to be from pkgsrc-controlled packages. Most
of the builtin.mk files test for the presence of built-in software by
checking for the existence of certain files, e.g. <pthread.h>, and we
now assume that if that file is under ${LOCALBASE}, then it must be
from pkgsrc. This modification is a nod toward LOCALBASE=/usr. The
exceptions to this new check are the X11 distribution packages, which
are handled specially as noted below.
The third major change is providing builtin.mk and version.mk files
for each of the X11 distribution packages in pkgsrc. The builtin.mk
file can detect whether the native X11 distribution is the same as
the one provided by pkgsrc, and the version.mk file computes the
version of the X11 distribution package, whether it's built-in or not.
The fourth major change is that the buildlink3.mk files for X11 packages
that install parts which are part of X11 distribution packages, e.g.
Xpm, Xcursor, etc., now use imake to query the X11 distribution for
whether the software is already provided by the X11 distribution.
This is more accurate than grepping for a symbol name in the imake
config files. Using imake required sprinkling various builtin-imake.mk
helper files into pkgsrc directories. These files are used as input
to imake since imake can't use stdin for that purpose.
The fifth major change is in how packages note that they use X11.
Instead of setting USE_X11, package Makefiles should now include
x11.buildlink3.mk instead. This causes the X11 package buildlink3
and builtin logic to be executed at the correct place for buildlink3.mk
and builtin.mk files that previously set USE_X11, and fixes packages
that relied on buildlink3.mk files to implicitly note that X11 is
needed. Package buildlink3.mk should also include x11.buildlink3.mk
when linking against the package libraries requires also linking
against the X11 libraries. Where it was obvious, redundant inclusions
of x11.buildlink3.mk have been removed.
in the process. (More information on tech-pkg.)
Bump PKGREVISION and BUILDLINK_DEPENDS of all packages using libtool and
installing .la files.
Bump PKGREVISION (only) of all packages depending directly on the above
via a buildlink3 include.
change log found other than "This is a maintenance release, just
fixing a few disastrous bugs introduced in the 5.2 release." (Which doesn't
matter for this.)
Use BUILDLINK3 system.
Uses ncurses (or libtermcap).
Add HOMEPAGE.
Change MASTER_SITES, because not at GNU mirrors yet.
Also install some documentation.
Update PLIST; now using share/ucblogo instead of share/logo.
Removed un-needed patches.
New patch-aa for makefile.in also makes sure that emacs logo-mode
is disabled; if you want an option for this, please do so.
This will close a PR #24858 because now ucblogo does build under Linux.
Tested under Linux and NetBSD 1.6.2. Used graphical interface
with "showturtle" and did some minor line drawings.