[RPL/2] New RPL/2

BERTRAND Joël joel.bertrand at systella.fr
Mer 22 Déc 20:46:02 CET 2004


	Hello,

	Last release this year. Now, it is possible to fork the main process
	on several processors with the new DETACH, WFPROC (wait for
	process), SEND and RECV (receive) intrinsics.

	DETACH is the same intrinsic than EVAL, but the evaluation is done
	in background. It returns a process ID. WFPROC waits for the
	termination of a child process. SEND and RECV are used to send data
	from the child to his parent.

	For example:

#!/home/bertrand/gopher/rpl2/build/src/rpl -cs

ESSAI
<<
	'FONCTION' detach
	'FONCTION2' detach

	swap

	1 1000 for I
		"B " I ->str + disp
	next
	
	dup disp
	dup RECEPTION disp
	dup RECEPTION disp
	dup RECEPTION disp
	dup RECEPTION disp
	dup RECEPTION disp
	dup RECEPTION disp
	dup RECEPTION disp
	dup RECEPTION disp
	dup RECEPTION disp
	dup RECEPTION disp
	dup RECEPTION disp
	dup RECEPTION disp
	dup RECEPTION disp
	dup RECEPTION disp
	dup RECEPTION disp
	dup RECEPTION disp
	wfproc
	dup RECEPTION disp
	RECEPTION disp
	clmf
>>

RECEPTION
<<
	-> PROC
	<<
		do
			PROC recv
		until
		end
	>>
>>

FONCTION
<<
	1 1000 start "A" disp next
	1 send
	2.5 send
	(3,-4) send
	[ 1 2 3 4 ] send
	[ 1 -2.2 3 4 ] send
	[ 1 -2.2 (3,2) 4 ] send
	[[ 1 2 3 4 ]] send
	[[ 1.3 2 3 4 ]] send
	[[ 1 (2,-2) 3 4 ]] send # 1d send
	'AZERTY' send
	# 1d send
	"Je me tiens sur le seuil de la vie et de la mort" send
	{ 1 2 3 "lkj" } send
	'sin(x+3)' send
	<< X EXP >> send
>>

FONCTION2
<<
	"        les yeux baissés les mains vides" send
	'FONCTION3' detach
	"Et la mer dont j'entends le bruit est une mer qui en rend jamais"
	" ses noyés" + send
>>

FONCTION3
<<
	1 100 start "C" disp next
>>

	Note than the bug that comes from new release of cpp is fixed.

	Regards,

	JKB



Plus d'informations sur la liste de diffusion RPL2