Will Noble | 29 Apr 2013 16:10

Reinitializer failing to run

Hi all,

I'm having a problem with reinitializers. The macro DEFINE-REINITIALIZER
defines a record variable, which might or might not be reachable from a
resumer function. When it is not, the reinitialization routine doesn't make
it into the saved heap image.

Take this example:
> ,open posix
> (define (date)
    (cond ((fork) => wait-for-child-process)
          (else (exec "date"))))
; no values returned
> ,dump good.image
Writing good.image
> ,build (lambda (args) (date) 0) bad.image
Writing bad.image

Resuming good.image and calling DATE works as expected, but running the VM
with bad.image hangs it because the reinitializer from the posix-process
module that installs signal handlers doesn't run, causing the system to
ignore SIGCHLD signals.

Using ADD-INITIALIZTION-THUNK! instead of a reinitializer doesn't work
because when the thunk runs posix.so would not yet have been loaded back in.

It seems to me that we should be able to expect reinitializers to run. I'm
not sure what the best solution here is. We could use a separate
second-stage initialization thunk list to implement reinitializers, instead
of the current method (relying on record resumers). Or maybe there is a
(Continue reading)

Michael Sperber | 10 Mar 2013 14:25
Picon

Commercial Users of Functional Programming 2013: Call for Presentations


			     Workshop for
	   Commercial Users of Functional Programming 2013
			 Sponsored by SIGPLAN
			      CUFP 2013
		      Co-located with ICFP 2013
		      Boston, MA, United States
			      Sep 22-24
	   Talk Proposal Submission Deadline: 29 June 2013

The annual CUFP workshop is a place where people can see how others
are using functional programming to solve real world problems; where
practitioners meet and collaborate; where language designers and users
can share ideas about the future of their favorite language; and where
one can learn practical techniques and approaches for putting
functional programming to work.

Giving a CUFP Talk
==================

If you have experience using functional languages in a practical
setting, we invite you to submit a proposal to give a talk at the
workshop. We are looking for both experience reports and in-depth
technical talks.

Experience reports are typically 25 minutes long (but negotiable), and
aim to inform participants about how functional programming plays out
in real-world applications, focusing especially on lessons learned and
insights gained. Experience reports don't need to be highly technical;
reflections on the commercial, management, or software engineering
(Continue reading)

Cinolt | 2 Mar 2013 15:24
Picon

Map doesn't work with n lists


R5RS specifies that map work with an arbitrary amount of lists, "(map proc
list1 list2 ...)" however I get an error when I try to evaluate:

(map + '(1 2 3) '(1 2 3))

assertion-violation: wrong number of arguments [tail-call]
                     (#{procedure 8517 map} '(#{procedure 110 +} (1 2 3) (1 2 3)))

Jonathan Rees | 25 Feb 2013 22:20
Favicon

testing 3

Testing mail server configuration. No action is required on your part.

Best
Jonathan

Michael Sperber | 22 Jan 2013 18:28
Picon

Scheme 48 1.9 available


Version 1.9 of the Scheme 48 system is now available from the Scheme 48
home page:

http://www.s48.org/

Scheme 48 is a based on byte-code interpreter and comes with a module
system, an extensive set of libraries, an interactive command-line-based
development environment and a manual in various formats. Scheme 48 runs
on most Unix/Linux systems, as well as Windows NT, 2000, XP, and Vista,
and is fully R5RS-conformant.

The 1.9 release has been a long time in the making, and is a substantial
feature release, with help from many contributors.  See the attached
release notes for details.

This release marks a change in direction (actually two
changes) for Scheme 48:

As most regular users of the system know, the system was originally
developed by Richard Kelsey and Jonathan Rees.  I have handled the
releases of Scheme 48 since version 1.1, with the help of Martin
Gasbichler, Marcus Crestani and many other volunteers.  We have tried to
make the system more oriented towards practical uses, and thus moved
away from Richard's and Jonathan's original goals for the system.
Nevertheless, we continued to release and distribute with Richard's and
Jonathan's names featured most prominently, as the number of
contributors and the amount of contributed code steadily increased.

Richard and Jonathan requested that we made the gradual change in
(Continue reading)

Michael Sperber | 30 Dec 2012 17:40
Picon

Scheme 48 1.9 release candidate #1


After something like 2.5 years of release engineering, I've put RCs for
Scheme 48 1.9 at:

http://s48.org/1.9/scheme48-1.9rc1.tgz
http://s48.org/1.9/scheme48-1.9rc1.msi

I'd appreciate if people could give this a whirl.  I'm especially
interested in reports Mac OS X Mountain Lion and Windows 8.

There are many things to say about this release; I'll say (some of) them
with the actual release announcement.  I hope to push out the actual
release by mid-January.  Sorry for taking so long.

NOTE: On my Mac OS X Lion installation, Xcode's C compilers come with a
prerelease LLVM backend that has a bug which essentially breaks
compiling the Scheme 48 VM.  (The compile takes forever, and the
resulting VM is unbearably slow.)  This affects both the Clang and the
gcc front ends.  The only solution I know to this problem is to install
LLVM/Clang via some other route.  I use the Clang/LLVM binaries from the
LLVM download page at:

http://llvm.org/releases/download.html

(Note that Clang generates many, many warnings, but the resulting
compile is fine.)

--

-- 
Regards,
Mike
(Continue reading)

Heath Putnam | 23 Dec 2012 14:07
Picon

FLATTEN-DEFINITIONS bug

There's a bug in ps-compiler/prescheme/flatten.scm

If you try compiling this code, the prescheme compiler loops forever
in FLATTEN-DEFINITIONS:

(define-structure foo
  (export a b)
  (open prescheme)
  (begin
      (define (a)
	(set! b (lambda () 100)))
      (define b (lambda () -2))
    ))

The code to do the looping doesn't cdr down the list of definitions.

None of the code in the s48 distribution features global variables of
type closure that get assigned (or this bug would have already turned
up).

Also, for reasons I don't understand, if you change
FLATTEN-DEFINITIONS so that the check (and (variable-set!? var)
(closure? value)) always fails, which ensures ensures termination, the
compiler nevertheless seems to put B into a variable and everything
works anyway. That makes me think my test program could be better.

If anyone can recommend a better test program, I'd appreciate it.

Heath
(Continue reading)

Jonathan Rees | 1 Dec 2012 15:03
Favicon

"invalid datums in quotation" should be suppressed

> ((eval (list 'quote (lambda () 'hello!)) (scheme-report-environment 5)))

Warning: invalid datum in quotation
         #{Procedure 8664}
         (&warning)
'hello!
> 

The spirit of the warning is correct, but there should be follow-through in the form of replacing the (quote
...) form with syntax error code, as happens with other static errors e.g.

> (lambda ())

Warning: invalid expression
         (#{Name lambda} ())
         (&syntax-error)
'syntax-error
> 

(Better would be for a run-time error to result, not just a bogus value.)

The reasoning is the same as that for converting mutable to immutable values when they're quoted, and has to
do with supporting cross-compilation and capability security applications. The prohibition is
allowed by the Scheme reports (due to the specified syntax of the QUOTE special form).

Best
Jonathan

Michael Sperber | 20 Nov 2012 20:48
Picon

CFP: JFP Special Issue on Run-Time Systems and Target Platforms for Functional Languages


Special Issue on Run-Time Systems and Target Platforms for Functional Languages

Submission Deadline: 30 June 2013.
Expected Publication Date: May 2014
Submission via:
http://journals.cambridge.org/action/displaySpecialPage?pageId=4220

The Journal of Functional Programming will devote a special issue to
implementation concerns, in particular, compilation and run-time techniques
for the entire spectrum of target platforms, whether constructed in support
of functional languages or not.

Today's implementations of functional languages target a wide variety of
platforms: machine code on traditional architectures, virtual machines
designed to support functional languages, others of a more generic nature
(such as the Java Virtual Machine and the .NET Common Language
Infrastructure), embedded systems and GPUs, JavaScript, and others.  The
purpose of this special issue is to collect ideas on how implementations of
functional languages bridge the gap between this variety of target
platforms and their own world.

Language implementors are invited to submit papers describing the current
state of the art in code generation for functional languages with a special
focus on the target architectures.

Guest Editors

Lennart Augustsson
Standard Chartered
(Continue reading)

Marcus Crestani | 13 Nov 2012 11:09
Picon

Scheme 48 Development Tools for Eclipse available

Scheme 48 Development Tools (SDT) is an Eclipse IDE for Scheme 48 with
the following features:

- Customizable syntax highlighting for Scheme code and Configuration
  Language
- Live-annotation of syntactic and semantic errors like unbound
  variables
- Auto formatting and selection strategy for easy typing of Scheme
  syntax and s-expressions
- Content assist
- Customizable code templates
- Expansion viewer for macro inspection and debugging
- Outline of top-level bindings
- Automatic expansion of macros to discover top-level bindings created
  by macros
- Multi-file search for declarations
- Wizard for fast and easy creation of new modules, interfaces and
  implementation files
- Integration of the Scheme-48 interpreter
- Support for the Scheme-48 module system

SDT is available from:

  http://s48.org/sdt

Enjoy!

Alex Shinn | 10 Nov 2012 07:30
Picon

R7RS 7th draft available

[Sent to multiple lists via bcc.]

The seventh and semi-final draft is available at:

http://trac.sacrideo.us/wg/raw-attachment/wiki/WikiStart/r7rs-draft-7.pdf

This includes many changes from the 6th draft,
including those resulting from the many formal
(and informal) comments we received.  Thanks
to everyone who helped!

The Steering Committee will form an electorate
and call for ratification based on this draft, after
which we will fix any errors in the eighth and final
draft.  Any issues arising after that point will be
tracked separately in an errata list.

A release of chibi-scheme with all changes up to
this point will be made shortly, along with a full
R7RS test suite.

-- 
Alex


Gmane