From Bruce@REDACTED Sat Sep 1 07:55:24 2001 From: Bruce@REDACTED (Bruce Fitzsimons) Date: Sat, 1 Sep 2001 17:55:24 +1200 Subject: More Driver Questions :-) References: <200108301156.f7UBuWB60019@tordmule.bluetail.com> Message-ID: <06a101c132aa$b192edb0$4021970a@neolineas.com> Thanks for your help, the penny has dropped. While I am blocking SIGPOLL inside my signal handler, and therefore avoiding reentrancy problems there, I did not know that malloc/free are usually not re-entrant. So while my code is reentrant safe, the process of sending the buffer to Erlang via driver_output *must* allocate memory at some point (and/or use other unsafe code), and if perchance Erlang was already allocating memory when the signal occurred then all hell breaks loose. This explains so many things...and makes me appreciate Erlang more :-) Thanks for the pipe idea Per, I will see if I can use that. I think a major redesign of the driver is overdue. I was also thinking about Raimos idea with respect to using pre-allocated binaries (and putting sig_hold/sig_release around the counter update). I think the major problem is that I am relying on internal Erlang code (driver_output_binary) not using non-reentrant functions, its probable but not under my control. If the Erlang code was updating the ref_count and was interrupted by the signal handler updating the ref_count it could be bad. The nasty thing about these problems is they only occur after you start using the code heavily :-( Once again; thanks, this was driving me crazy. Cheers, Bruce From per@REDACTED Sat Sep 1 12:40:57 2001 From: per@REDACTED (per@REDACTED) Date: Sat, 1 Sep 2001 12:40:57 +0200 (CEST) Subject: More Driver Questions :-) In-Reply-To: <06a101c132aa$b192edb0$4021970a@neolineas.com> Message-ID: <200109011040.f81AevN66356@tordmule.bluetail.com> "Bruce Fitzsimons" wrote: >I was also thinking about Raimos idea with respect to using pre-allocated >binaries (and putting sig_hold/sig_release around the counter update). I >think the major problem is that I am relying on internal Erlang code >(driver_output_binary) not using non-reentrant functions, its probable but >not under my control. If the Erlang code was updating the ref_count and was >interrupted by the signal handler updating the ref_count it could be bad. Actually, it's basically guaranteed that driver_ouput[_binary] *will* use non-reentrant functions I believe - the only question is whether it will bite you (or rather *when*:-). Even leaving aside malloc/free and reference counts, whatever you send will be put on the input queue of some process - if that input queue was being manipulated (another process sending to it, or the process itself extracting a message from it) when the signal occured, the result has a very high probability of being a Mess(tm). And there is more... - e.g. the process may be scheduled to run as a result of receiving your message, if the run queue was already being manipulated when the signal occured, etc... - well, you can read the code yourself.:-) --Per Hedeland per@REDACTED From kent@REDACTED Mon Sep 3 17:46:29 2001 From: kent@REDACTED (Kent Boortz) Date: 03 Sep 2001 17:46:29 +0200 Subject: R8B PRE-RELEASES Message-ID: ************************ R8B PRE-RELEASES ************************ We are asking you for help testing the pre-releases (P8A) for R8B. These are snapshots from our daily build and test. The release notes and documentation is not completed yet but you can view it in its current state, including a preliminary description of the release highlights, at http://www.erlang.org/doc/p8a/doc/ http://www.erlang.org/doc/p8a/doc/highlights.html The different releases are http://www.erlang.se/lic_area/protected/releases/otp_sunos5_P8A-20010902-SNAPSHOT.tar.gz Solaris 2.5.1 commercial binary pre-release. It is tested on Solaris 2.5.1, Solaris 2.6 and Solaris 7. http://www.erlang.se/lic_area/protected/releases/otp_solaris8_P8A-20010902-SNAPSHOT.tar.gz Solaris 8 commercial binary pre-release. http://www.erlang.org/download/prereleases/otp_src_P8A-20010902-SNAPSHOT.tar.gz OpenSource pre-release. Should compile and run on most Unix and Linux platforms including Apple OS X. http://www.erlang.org/download/prereleases/otp_doc_html_P8A-20010903-SNAPSHOT.tar.gz HTML documentation and Unix man pages. We will distribute pre-releases for Windows and Linux x86 soon. We didn't plan to create commercial pre-release for other platforms but let us know if you want to test commercial versions for VxWorks CPU32, VxWorks PPC860, VxWorks PPC603 or Linux PPC605. Some notes The graphical debugger is known to be broken. The HTML documentation links to 'ic', 'jinterface' and 'orber' are known to be broken. The Unix man pages for 'sofs' and 'xref' can't be reached with "erl -man ". The HIPE (High-Performance Erlang) native code compiler for Sparc is integrated into the OpenSource release. You can find more information about HIPE at "http://www.csd.uu.se/projects/hipe/". Solaris binary commercial pre-releases are packed using Solaris TAR, all others are packed using GNU TAR. All applications have the build date as the version number. Please send problem reports to . If you are a paying customer you can alternatively send the problem reports to , The OTP Team From pekka@REDACTED Mon Sep 3 20:11:04 2001 From: pekka@REDACTED (pekka@REDACTED) Date: Mon, 3 Sep 2001 20:11:04 +0200 Subject: R8B PRE-RELEASES In-Reply-To: Message-ID: vad skiljer de kommersiella varianterna numera? >-----Original Message----- >From: owner-erlang-announce@REDACTED >[mailto:owner-erlang-announce@REDACTED]On Behalf Of Kent Boortz >Sent: Monday, September 03, 2001 5:46 PM >To: erlang-announce@REDACTED >Subject: R8B PRE-RELEASES > > > >************************ R8B PRE-RELEASES ************************ > >We are asking you for help testing the pre-releases (P8A) for R8B. >These are snapshots from our daily build and test. > >The release notes and documentation is not completed yet but you can >view it in its current state, including a preliminary description of >the release highlights, at > > http://www.erlang.org/doc/p8a/doc/ > http://www.erlang.org/doc/p8a/doc/highlights.html > >The different releases are > > >http://www.erlang.se/lic_area/protected/releases/otp_sunos5_P8A-200 >10902-SNAPSHOT.tar.gz > > Solaris 2.5.1 commercial binary pre-release. It is tested on > Solaris 2.5.1, Solaris 2.6 and Solaris 7. > > >http://www.erlang.se/lic_area/protected/releases/otp_solaris8_P8A-2 >0010902-SNAPSHOT.tar.gz > > Solaris 8 commercial binary pre-release. > > http://www.erlang.org/download/prereleases/otp_src_P8A-20010902-SNAPSHOT.tar .gz OpenSource pre-release. Should compile and run on most Unix and Linux platforms including Apple OS X. http://www.erlang.org/download/prereleases/otp_doc_html_P8A-20010903-SNAPSHO T.tar.gz HTML documentation and Unix man pages. We will distribute pre-releases for Windows and Linux x86 soon. We didn't plan to create commercial pre-release for other platforms but let us know if you want to test commercial versions for VxWorks CPU32, VxWorks PPC860, VxWorks PPC603 or Linux PPC605. Some notes The graphical debugger is known to be broken. The HTML documentation links to 'ic', 'jinterface' and 'orber' are known to be broken. The Unix man pages for 'sofs' and 'xref' can't be reached with "erl -man ". The HIPE (High-Performance Erlang) native code compiler for Sparc is integrated into the OpenSource release. You can find more information about HIPE at "http://www.csd.uu.se/projects/hipe/". Solaris binary commercial pre-releases are packed using Solaris TAR, all others are packed using GNU TAR. All applications have the build date as the version number. Please send problem reports to . If you are a paying customer you can alternatively send the problem reports to , The OTP Team From kent@REDACTED Mon Sep 3 20:30:21 2001 From: kent@REDACTED (Kent Boortz) Date: 03 Sep 2001 20:30:21 +0200 Subject: R8B PRE-RELEASES In-Reply-To: 's message of "Mon, 3 Sep 2001 20:11:04 +0200" References: Message-ID: writes: > vad skiljer de kommersiella varianterna numera? I assume you ask what the difference is between the commercial and OpenSource version? There is no difference in functionality except that the commercial version doesn't include the HIPE runtime extension. So what you pay for is support, patches and helping us continue to improve Erlang/OTP. The commercial releases being binary releases makes it more easy for us to reproduce the problems customers may have, we have full control how the product is built. kent From taavi@REDACTED Mon Sep 3 23:29:42 2001 From: taavi@REDACTED (Taavi Talvik) Date: Mon, 3 Sep 2001 23:29:42 +0200 (EET) Subject: OTP R8A and emacs mode Message-ID: Just minor comment: lib/emacs/erlang.el is v2.4 lib/emacs/erlang.elc is compiled from previous version and should be either removed or updated best regards, taavi From kent@REDACTED Tue Sep 4 01:09:33 2001 From: kent@REDACTED (Kent Boortz) Date: 04 Sep 2001 01:09:33 +0200 Subject: OTP R8A and emacs mode In-Reply-To: Taavi Talvik's message of "Mon, 3 Sep 2001 23:29:42 +0200 (EET)" References: Message-ID: > lib/emacs/erlang.el is v2.4 > lib/emacs/erlang.elc is compiled from previous version > and should be either removed or updated The object file was checked in to our revision system and was doomed to be out if sync at some point. I have added makefile targets to create the ".elc" files. Unfortunately "emacs.el" didn't cleanly compile in emacs-19 so I use emacs-20. I hope this isn't a problem, I could not find a reference about if the emacs bytecode is backward compatible or not. Thank you for reporting this, kent From kent@REDACTED Tue Sep 4 11:41:18 2001 From: kent@REDACTED (Kent Boortz) Date: 04 Sep 2001 11:41:18 +0200 Subject: R8B PRE-RELEASES In-Reply-To: Kent Boortz's message of "03 Sep 2001 17:46:29 +0200" References: Message-ID: Now you can also find the Windows version, the same for commercial and OpenSource, at http://www.erlang.org/download/prereleases/otp_win32_P8A-20010903-SNAPSHOT.exe kent From Thomas.V.Hansen@REDACTED Tue Sep 4 14:27:30 2001 From: Thomas.V.Hansen@REDACTED (Thomas Verner Hansen (LMD)) Date: Tue, 4 Sep 2001 14:27:30 +0200 Subject: CPU Load/Measure Message-ID: <319B232179B9D4118B030008C786CE7F044EC7C1@edkchnt101.lmd.ericsson.se> Hi !! Been away from Erlang for a longer period, and am now back to look into a Trouble Report on a running system ... The problem seems to be in some third party software, not written in Erlang, of course :-), this software fails badly when the CPU load gets high, we have asked for a fix, but it might take time ! As always I've been confronted with "Everything is so fast to do in Erlang, can't you do something, while we wait ... " And know can I ? We are "running" MS Windows NT, and I would like to know the CPU load in my Erlang program, so we won't trouble the non-Erlang program, if we are above a certain level ! Can anyone help, with a way to obtain the CPU load in Erlang, using NT ? Regards ( & thanx in advance ) /v Thomas Verner Hansen Senior System Architect, Bluetooth Specialist, Solution House L.M. Ericsson A/S Tel: +45 33 88 34 51 Fax: +45 33 88 31 23 Mobil: +45 20 48 34 51 mailto:Thomas.V.Hansen@REDACTED?subject=Regarding_your_mail The path of Glory, lead but to the Grave. From per@REDACTED Tue Sep 4 14:40:59 2001 From: per@REDACTED (Per Bergqvist) Date: Tue, 04 Sep 2001 14:40:59 +0200 Subject: Crash, boom, bang (R8B) Message-ID: <3B94CBDB.F3E87937@cellpoint.com> Try this, [perber@REDACTED]:test> cat > bummer.erl -module(bummer). -compile(export_all). hi() -> "Hello". ^D [perber@REDACTED]:test> ../bin/erl Erlang (BEAM) emulator version 2001.09.02 [source] [hipe] Eshell V2001.09.02 (abort with ^G) 1> c(bummer). {ok,bummer} 2> BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded (v)ersion (k)ill (D)b-tables (d)istribution a [perber@REDACTED]:test> ../bin/erl Erlang (BEAM) emulator version 2001.09.02 [source] [hipe] Eshell V2001.09.02 (abort with ^G) 1> hipe:c(bummer). {ok,bummer} 2> hipe:c(bummer). {ok,bummer} 3> code:purge(bummer). beam_catches_delmod: item 0 has cp 0x8d8ac which is not in module's range [0x460e50,0x460f82[ Abort (core dumped) /Per From per@REDACTED Tue Sep 4 14:43:56 2001 From: per@REDACTED (Per Bergqvist) Date: Tue, 04 Sep 2001 14:43:56 +0200 Subject: Crash, boom, bang (R8B) Message-ID: <3B94CC8C.1F7E35D@cellpoint.com> Try this, [perber@REDACTED]:test> cat > bummer.erl -module(bummer). -compile(export_all). hi() -> "Hello". ^D [perber@REDACTED]:test> ../bin/erl Erlang (BEAM) emulator version 2001.09.02 [source] [hipe] Eshell V2001.09.02 (abort with ^G) 1> c(bummer). {ok,bummer} 2> BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded (v)ersion (k)ill (D)b-tables (d)istribution a [perber@REDACTED]:test> ../bin/erl Erlang (BEAM) emulator version 2001.09.02 [source] [hipe] Eshell V2001.09.02 (abort with ^G) 1> hipe:c(bummer). {ok,bummer} 2> hipe:c(bummer). {ok,bummer} 3> code:purge(bummer). beam_catches_delmod: item 0 has cp 0x8d8ac which is not in module's range [0x460e50,0x460f82[ Abort (core dumped) /Per From lennart.ohman@REDACTED Tue Sep 4 15:48:44 2001 From: lennart.ohman@REDACTED (Lennart =?iso-8859-1?Q?=D6hman?=) Date: Tue, 04 Sep 2001 15:48:44 +0200 Subject: Your own behaviours Message-ID: <3B94DBBC.313203A1@st.se> Hi! Mandatory callback functions, among other things, are defined in the module otp_internal. This module is used when compiling modules having -behavior attribute. If you wish to extend your OTP with your own behaviors, otp_internal must (should) be changed. My suggestion is that the functions in the otp_internal are changed to look for the "answers" in the generic module corresponding to the behaviour at hand. In this way you do not need to change modules belonging to the original system. But instead only program a set of required functions in any new behaviour you invent. Best Regards, Lennart ------------------------------------------------------------- Lennart Ohman phone : +46-8-587 623 27 Sjoland & Thyselius Telecom AB cellular: +46-70-552 6735 Sehlstedtsgatan 6 fax : +46-8-667 8230 SE-115 28 STOCKHOLM, SWEDEN email : lennart.ohman@REDACTED From etxuwig@REDACTED Tue Sep 4 16:09:10 2001 From: etxuwig@REDACTED (Ulf Wiger) Date: Tue, 4 Sep 2001 16:09:10 +0200 (MET DST) Subject: Your own behaviours In-Reply-To: <3B94DBBC.313203A1@st.se> Message-ID: On Tue, 4 Sep 2001, Lennart ?hman wrote: >Hi! > >Mandatory callback functions, among other things, are defined >in the module otp_internal. This module is used when compiling >modules having -behavior attribute. > >If you wish to extend your OTP with your own behaviors, otp_internal >must (should) be changed. > >My suggestion is that the functions in the otp_internal are changed to >look for the "answers" in the generic module corresponding >to the behaviour at hand. In this way you do not need to change >modules belonging to the original system. But instead only program >a set of required functions in any new behaviour you invent. I did this a while back when I modified the supervisor behaviour. http://www.erlang.org/ml-archive/erlang-questions/200102/msg00071.html Personally, I thought it was a formidable improvement, but my excitement didn't seem to rub off on too many others... (: I still think it's a good idea. /Uffe -- Ulf Wiger tfn: +46 8 719 81 95 Senior System Architect mob: +46 70 519 81 95 Strategic Product & System Management ATM Multiservice Networks Data Backbone & Optical Services Division Ericsson Telecom AB From mbj@REDACTED Tue Sep 4 16:18:22 2001 From: mbj@REDACTED (Martin Bjorklund) Date: Tue, 04 Sep 2001 16:18:22 +0200 (CEST) Subject: Your own behaviours In-Reply-To: <3B94DBBC.313203A1@st.se> References: <3B94DBBC.313203A1@st.se> Message-ID: <20010904.161822.74729394.mbj@bluetail.com> Lennart ?hman wrote: > Hi! > > Mandatory callback functions, among other things, are defined > in the module otp_internal. This module is used when compiling > modules having -behavior attribute. > > If you wish to extend your OTP with your own behaviors, otp_internal > must (should) be changed. > > My suggestion is that the functions in the otp_internal are changed to > look for the "answers" in the generic module corresponding > to the behaviour at hand. In this way you do not need to change > modules belonging to the original system. But instead only program > a set of required functions in any new behaviour you invent. Yes, I definitely agree! We should have done this from the start. I think Uffe Wiger suggested this some time ago also. [Right, I see now that he did, I also commented on that one: http://www.erlang.org/ml-archive/erlang-questions/200102/msg00100.html] It's pretty trivial to fix in erl_lint.erl. Of course, you'd have to make sure that the compiled behaviour module is in the compiler's path, but I think that should be up to the developer (e.g. by using .erlang). /martin From bjorn@REDACTED Wed Sep 5 11:56:56 2001 From: bjorn@REDACTED (Bjorn Gustavsson) Date: 05 Sep 2001 11:56:56 +0200 Subject: Crash, boom, bang (R8B) In-Reply-To: Per Bergqvist's message of "Tue, 04 Sep 2001 14:40:59 +0200" References: <3B94CBDB.F3E87937@cellpoint.com> Message-ID: Unloading native (hipe) code will not be supported in R8. However, we might fix the purge function so that the emulator doesn't crasch when you try... /Bjorn Per Bergqvist writes: > Try this, > > [perber@REDACTED]:test> cat > bummer.erl > -module(bummer). > > -compile(export_all). > > hi() -> "Hello". > > ^D > [perber@REDACTED]:test> ../bin/erl > Erlang (BEAM) emulator version 2001.09.02 [source] [hipe] > > Eshell V2001.09.02 (abort with ^G) > 1> c(bummer). > {ok,bummer} > 2> > BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded > (v)ersion (k)ill (D)b-tables (d)istribution > a > [perber@REDACTED]:test> ../bin/erl > Erlang (BEAM) emulator version 2001.09.02 [source] [hipe] > > Eshell V2001.09.02 (abort with ^G) > 1> hipe:c(bummer). > {ok,bummer} > 2> hipe:c(bummer). > {ok,bummer} > 3> code:purge(bummer). > beam_catches_delmod: item 0 has cp 0x8d8ac which is not in module's > range [0x460e50,0x460f82[ > Abort (core dumped) > > /Per > > -- Bj?rn Gustavsson Ericsson Utvecklings AB bjorn@REDACTED ?T2/UAB/F/P BOX 1505 +46 8 727 56 87 125 25 ?lvsj? From per@REDACTED Wed Sep 5 12:16:26 2001 From: per@REDACTED (Per Bergqvist) Date: Wed, 05 Sep 2001 12:16:26 +0200 Subject: Missing file in P8A snapshot Message-ID: <3B95FB7A.3AB38C01@cellpoint.com> Can somebody post the file hipe_x86_stack.h, please ? /Per From bjorn@REDACTED Wed Sep 5 13:20:52 2001 From: bjorn@REDACTED (Bjorn Gustavsson) Date: 05 Sep 2001 13:20:52 +0200 Subject: Missing file in P8A snapshot In-Reply-To: Per Bergqvist's message of "Wed, 05 Sep 2001 12:16:26 +0200" References: <3B95FB7A.3AB38C01@cellpoint.com> Message-ID: OK, here it is. /* $Id: hipe_x86_stack.h,v 1.1 2001/07/26 13:39:25 mikpe Exp $ */ #ifndef HIPE_X86_STACK_H #define HIPE_X86_STACK_H extern void hipe_x86_clean_nstack(Process*); #endif /* HIPE_X86_STACK_H */ It will be included in our next snapshot. /Bjorn Per Bergqvist writes: > Can somebody post the file hipe_x86_stack.h, please ? > > /Per > -- Bj?rn Gustavsson Ericsson Utvecklings AB bjorn@REDACTED ?T2/UAB/F/P BOX 1505 +46 8 727 56 87 125 25 ?lvsj? From david@REDACTED Wed Sep 5 21:36:52 2001 From: david@REDACTED (david wallin) Date: Wed, 5 Sep 2001 21:36:52 +0200 Subject: inappropriate Mach-O under MacOS X Message-ID: <20010905193655.CAFI10944.fep04-svc.swip.net@localhost> Hi, I'm trying to load a small driver that I wrote but I can't get it working. I'm running R7B-3 under MacOS X and I keep getting this error message : {error,{open_error,"dyld: inappropriate Mach-O file"}} What should I do to resolve this ? I have tried various flags to the compiler/linker but nothing seems to do the trick. --david. From kent@REDACTED Wed Sep 5 22:21:09 2001 From: kent@REDACTED (Kent Boortz) Date: 05 Sep 2001 22:21:09 +0200 Subject: inappropriate Mach-O under MacOS X In-Reply-To: david wallin's message of "Wed, 5 Sep 2001 21:36:52 +0200" References: <20010905193655.CAFI10944.fep04-svc.swip.net@localhost> Message-ID: david wallin writes: > I'm trying to load a small driver that I wrote but I can't get it > working. I'm running R7B-3 under MacOS X and I keep getting this error > message : > > {error,{open_error,"dyld: inappropriate Mach-O file"}} > > What should I do to resolve this ? I have tried various flags to the > compiler/linker but nothing seems to do the trick. I was rather frustrated when I tried to find out how to create the linked in drivers. I *think* I got it working, I haven't got the OSX machine into our daily build and test yet. >From the erts/configure.in DED_LDFLAGS="-bundle -undefined suppress" DED_CFLAGS="$DED_CFLAGS -fno-common" >From our test server configure script Darwin*) SHLIB_CFLAGS="-fno-common" SHLIB_LD="cc -bundle -undefined suppress" SHLIB_SUFFIX=".so" ;; I don't remember exactly but I think I failed to link with "ld" and use "cc" to link. kent From ehobbick@REDACTED Wed Sep 5 22:19:46 2001 From: ehobbick@REDACTED (Ely Hobbick) Date: Wed, 5 Sep 2001 15:19:46 -0500 Subject: Erlang Message-ID: <4D86D24AC4FCD4119A6700B0D06802C4017419DD@EXCHANGE-2> Did you ever send answer on this question..... I use an Erlang C calculation to assess Call Centre staff required on any given day. The team producing these figures currently use an Erlang calculator, which takes time to input figures and type the answers into an Excel Spreadsheet. Do you know where I can find an Excel formula download for Erlang C ? Do I use the GAMMADIST formula in Excel ? Also is Erlang C the most modern method used for estimating Call Centre traffic or are we a little out of date ? Thanks Ely Quiroga Hobbick <<...OLE_Obj...>> 115 Wild Basin Austin, Texas 78746 512-682-6017 Arm yourself with powerful trading tools from CyberTrader http://www.cybertrader.com/ RULE THE STREET!! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CyberTrader does not accept buy or sell orders or cancels through this medium and is not responsible for any orders so placed. The information transmitted is intended only for the person or entity to which it is addressed and may contain confidential and/or privileged material. Any review, retransmission, dissemination or other use of, or taking of any action in reliance upon, this information by persons or entities other than the intended recipient is prohibited. If you received this in error, please contact the sender and delete the material from any computer. WARNING: All email sent to or from this address will be received or otherwise recorded by the Charles Schwab corporate email system and is subject to archival, monitoring or review by, and / or disclosure to, someone other than the recipient. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ From Sean.Hinde@REDACTED Wed Sep 5 23:21:20 2001 From: Sean.Hinde@REDACTED (Sean Hinde) Date: Wed, 5 Sep 2001 22:21:20 +0100 Subject: Erlang Message-ID: <402DD461F109D411977E0008C791C312039F636D@IMP02MBX> This mailing list is about the Erlang programming language from Ericsson. This has nothing at all to do with Traffic Formula except sharing a name. You might try www.erlang.com as I think this has information more related to your request. Sean > -----Original Message----- > From: Ely Hobbick [mailto:ehobbick@REDACTED] > Sent: 05 September 2001 21:20 > To: erlang-questions@REDACTED > Subject: Erlang > > > Did you ever send answer on this question..... > I use an Erlang C calculation to assess Call Centre staff > required on any > given day. The team producing these figures currently use an Erlang > calculator, which takes time to input figures and type the > answers into an > Excel Spreadsheet. Do you know where I can find an Excel > formula download > for Erlang C ? Do I use the GAMMADIST formula in Excel ? > Also is Erlang C > the most modern method used for estimating Call Centre > traffic or are we a > little out of date ? Thanks > Ely Quiroga Hobbick > <<...OLE_Obj...>> > 115 Wild Basin > Austin, Texas 78746 > 512-682-6017 > > > Arm yourself with powerful trading tools from CyberTrader > http://www.cybertrader.com/ > RULE THE STREET!! > > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > CyberTrader does not accept buy or sell orders or cancels > through this medium and is not responsible for any orders > so placed. The information transmitted is intended only for > the person or entity to which it is addressed and > may contain confidential and/or privileged material. Any > review, retransmission, dissemination or other use > of, or taking of any action in reliance upon, this > information by persons or entities other than the > intended recipient is prohibited. If you received this in > error, please contact the sender and delete the material > from any computer. > > WARNING: All email sent to or from this address will be > received or otherwise recorded by the Charles Schwab > corporate email system and is subject to archival, monitoring > or review by, and / or disclosure to, someone > other than the recipient. > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > NOTICE AND DISCLAIMER: This email (including attachments) is confidential. If you have received this email in error please notify the sender immediately and delete this email from your system without copying or disseminating it or placing any reliance upon its contents. We cannot accept liability for any breaches of confidence arising through use of email. Any opinions expressed in this email (including attachments) are those of the author and do not necessarily reflect our opinions. We will not accept responsibility for any commitments made by our employees outside the scope of our business. We do not warrant the accuracy or completeness of such information. From Joakim.Hirsch@REDACTED Thu Sep 6 14:41:41 2001 From: Joakim.Hirsch@REDACTED (Joakim Hirsch) Date: Thu, 6 Sep 2001 14:41:41 +0200 (MET DST) Subject: Job Message-ID: <200109061241.f86Cffo02873@ms.uab.ericsson.se.> Hi Everyone, A while ago someone managed to sneak a kind of job application into this list without getting flogged for it. So I'm giving it a go too. After 4 years as "internal consultant" I'm resigning from "the department formerly known as Erlang Systems". I haven't had much time to consider in which direction to head yet, but if anyone has an interesting proposition I'll give it serious consideration. I like working with Erlang, but I'm not addicted to it (I can quit whenever I want). In case anyone wants to respond to this, I suggest the reply be sent directly to me to keep this list free from further pollution. Cheers, Joakim ----------------------------------------------------------------- Joakim Hirsch Training Manager, Erlang/OTP Ericsson Utvecklings AB Consulting & Training Box 1505 Tel: +46 8 5687 6438 SE-125 25 ?lvsj?, Sweden Fax: +46 8 647 82 76 Visiting Address: Mobile: +46 70 632 44 70 Armborstv?gen 14, ?lvsj? E-mail: joakim.hirsch@REDACTED ----------------------------------------------------------------- From chris.williams@REDACTED Thu Sep 6 16:10:22 2001 From: chris.williams@REDACTED (Christopher Williams) Date: Thu, 6 Sep 2001 15:10:22 +0100 Subject: Common recruiting page? Message-ID: <3b9783ce.7dab.0@oceanfree.net> Hi, There was talks about setting up a common recruiting page for Erlang jobs some time ago. Was this ever done? //Chris *************************** ADVERTISEMENT ****************************** Birdseye Hot & Steamy, offers you the chance to win a Home Cinema System worth ?2500 - Check out http://www.birdseyehotandsteamy.ie/comp3.html From luke@REDACTED Thu Sep 6 16:32:27 2001 From: luke@REDACTED (Luke Gorrie) Date: 06 Sep 2001 16:32:27 +0200 Subject: Common recruiting page? In-Reply-To: <3b9783ce.7dab.0@oceanfree.net> References: <3b9783ce.7dab.0@oceanfree.net> Message-ID: "Christopher Williams" writes: > Hi, > There was talks about setting up a common recruiting page for > Erlang jobs some time ago. Was this ever done? > //Chris There's http://www.bluetail.com/wiki/showPage?node=ErlangJobs - it seems like a good common place to use. I just added some space at the bottom for people who want Erlang jobs. Cheers, Luke From rv@REDACTED Fri Sep 7 11:29:59 2001 From: rv@REDACTED (Robert Virding) Date: Fri, 07 Sep 2001 11:29:59 +0200 Subject: Three IO library related problems In-Reply-To: Your message of "Thu, 30 Aug 2001 00:41:14 +0200." <15245.28554.347168.155456@antilipe.corelatus.se> Message-ID: <200109070929.f879Txl31923@duva.bluetail.com> matthias@REDACTED writes: > >Robert wrote > > No, this is perfectly correct. io_lib:fread/2 takes a format string > > and an input string and tries to extract ALL the specified fields. It > > is not re-entrant! > >If it's not intended to be re-entrant, why does fread/2 return {more, ...} >in some cases? Consider these two cases: > > io_lib:fread("~d.~d", "22") crashes the process (function_clause) > io_lib:fread("~d~d", "22") returns {more,"~d",2,[22]} > >If this is perfectly correct, then (a) how can I guess whether the >fread/2 is going to crash or return {more, ...} for a particular input >which only satisfies part of the format string and (b) why is it >crashing with function_clause as a reason instead of badarg? This is definitely a bug and I will fix it. If I can still remember how the code works. :-) As you have already noticed the format of the {more,...} tuple is different: 5> io_lib:fread("~d~d", "22"). {more,"~d",2,[22]} 6> io_lib:fread([],"~d~d", "22"). {more,{"~d~d","22",0,[]}} Which "proves" that there is a bug. Actually it seems quite buggy. Sigh! Robert From bjorn@REDACTED Fri Sep 7 12:19:34 2001 From: bjorn@REDACTED (Bjorn Gustavsson) Date: 07 Sep 2001 12:19:34 +0200 Subject: New R8B pre-releases Message-ID: ************************ R8B PRE-RELEASES ************************ We are asking you for help testing the pre-releases (P8A) for R8B. These are snapshots from our daily build and test. The release notes and documentation is not completed yet but you can view it in its current state, including a preliminary description of the release highlights, at http://www.erlang.org/doc/p8a/doc/ http://www.erlang.org/doc/p8a/doc/highlights.html The different releases are http://www.erlang.se/lic_area/protected/releases/otp_sunos5_P8A-20010906-SNAPSHOT.tar.gz Solaris 2.5.1 commercial binary pre-release. It is tested on Solaris 2.5.1, Solaris 2.6 and Solaris 7. http://www.erlang.se/lic_area/protected/releases/otp_solaris8_P8A-20010906-SNAPSHOT.tar.gz Solaris 8 commercial binary pre-release. http://www.erlang.org/download/prereleases/otp_src_P8A-20010906-SNAPSHOT.tar.gz OpenSource pre-release. Should compile and run on most Unix and Linux platforms including Apple OS X. http://www.erlang.org/download/prereleases/otp_win32_P8A-20010906-SNAPSHOT.exe Windows release. http://www.erlang.org/download/prereleases/otp_doc_html_P8A-20010906-SNAPSHOT.tar.gz HTML documentation and Unix man pages. The most important changes from the previous snapshot: A memory allocator/garbage collector bug was fixed. Internal changes in HIPE. Also, all HIPE-files mentioned in Makefiles should now also be included. The compiler generates slightly smaller and faster code for record updates. There is a new external format for funs. Sending funs over erlang distribution to erlang nodes should work transparently (the old format is automatically used when talking to R7 or older nodes). erl_interface and ei does not yet recognize the new format. Some notes: The graphical debugger is known to be broken. The HTML documentation links to 'ic', 'jinterface' and 'orber' are known to be broken. The Unix man pages for 'sofs' and 'xref' can't be reached with "erl -man ". The HIPE (High-Performance Erlang) native code compiler for Sparc and Intel is integrated into the OpenSource release. You can find more information about HIPE at "http://www.csd.uu.se/projects/hipe/". Solaris binary commercial pre-releases are packed using Solaris TAR, all others are packed using GNU TAR. All applications have the build date as the version number. Please send problem reports to . If you are a paying customer you can alternatively send the problem reports to . The OTP Team From tonyp@REDACTED Fri Sep 7 13:46:56 2001 From: tonyp@REDACTED (Tony Pedley) Date: Fri, 07 Sep 2001 12:46:56 +0100 Subject: Slashdot | ICFP 2001 Contest Results Message-ID: <3B98B3B0.711E02@terminus.ericsson.se> Congratulations to all those involved in the award at the 2001 ICFP contest Its niced to see Erlang getting a bit of exposure for once http://slashdot.org/article.pl?sid=01/09/07/0131231&mode=thread From per@REDACTED Sat Sep 8 13:36:25 2001 From: per@REDACTED (Per Bergqvist) Date: Sat, 08 Sep 2001 13:36:25 +0200 Subject: Fixes for 20010906 snapshot Message-ID: <3B9A02B9.3C5E5A4D@synapse.se> Hi, here are a few fixes for the 20010906 snapshot. The emulator will now build without compiler warnings under RH 7.1 +Linux 2.4.9 + gcc 2.95.3 ;-) A note on building on RedHat 7.1. Don't use the default RH gcc (2.96, which is not an official release of gcc) since it will only generate tons of warnings. Use a released version of gcc like 2.95.3 instead. /Per -------------- next part -------------- A non-text attachment was scrubbed... Name: otp_src_P8A-20010906-SNAPSHOT-per-fixes.tar.gz Type: application/x-gzip Size: 125893 bytes Desc: not available URL: From mickael.remond@REDACTED Sat Sep 8 17:07:24 2001 From: mickael.remond@REDACTED (Mickael Remond) Date: Sat, 8 Sep 2001 17:07:24 +0200 Subject: Erlang IRC channel on OpenProjects Message-ID: <20010908170724.A4442@erlang-fr.org> Following a discussion during Erlang Workshop at PLI'01 (Firenze), I have created an Erlang IRC channel (english speaking) on the OpenProjects network. You can for example use irc.debian.org as your IRC server and simply join the #erlang channel. See you soon on IRC. -- Micka?l R?mond http://www.erlang-fr.org/ From mickael.remond@REDACTED Tue Sep 11 13:14:50 2001 From: mickael.remond@REDACTED (Mickael Remond) Date: Tue, 11 Sep 2001 13:14:50 +0200 (MEST) Subject: Socket Send help needed Message-ID: <1000206890.3b9df22ac0c64@imp.pro.proxad.net> Hello, I am currently rewriting Manderlbot, an Erlang IRC bot, to make it more easily customizable. But there is still one problem that I cannot find any valid answer. The bot is working well, but after a while without having send any data on the channel, the first message seems to be lost. This means that the gen_tcp:send works correctly from my program point of view and its return value is ok. But the first message does seem to reach the server (It never goes on the channel). If I do immediatly a new gen_tcp:send, the second send is working. So it seems that the first send is lost... Is there a socket expert here that could explain me what I might be missing ? -- Micka?l R?mond http://www.erlang-fr.org From euskcj@REDACTED Wed Sep 12 16:24:54 2001 From: euskcj@REDACTED (Kent Johnson) Date: Wed, 12 Sep 2001 09:24:54 -0500 Subject: gen_server with spawn_opt Message-ID: <3B9F7036.D21A3A17@exu.ericsson.se> Is there a reason the that spawn_opts are not documented for the gen_server? For instance it is possible to do the following: gen_server:start_link({local, ?MODULE}, ?MODULE,[], [{spawn_opt, [{min_heap_size, 3000}]}]). Is this feature not documented because it will be taken away? Thanks, -Kent From etxuwig@REDACTED Wed Sep 12 16:56:05 2001 From: etxuwig@REDACTED (Ulf Wiger) Date: Wed, 12 Sep 2001 16:56:05 +0200 (MET DST) Subject: gen_server with spawn_opt In-Reply-To: <3B9F7036.D21A3A17@exu.ericsson.se> Message-ID: I will venture to answer that one. As promised by the OTP team (ticket reference seq4927), it *will* be documented (they didn't say when...). The functions gen:spawn_opt/4 and proc_lib:spawn_opt/4 are the underlying mechanisms, making this available to all behaviours. Neither of them are documented... yet. /Uffe On Wed, 12 Sep 2001, Kent Johnson wrote: >Is there a reason the that spawn_opts are not documented >for the gen_server? > >For instance it is possible to do the following: > >gen_server:start_link({local, ?MODULE}, ?MODULE,[], > [{spawn_opt, [{min_heap_size, 3000}]}]). > >Is this feature not documented because it will be taken away? > > >Thanks, > >-Kent -- Ulf Wiger tfn: +46 8 719 81 95 Senior System Architect mob: +46 70 519 81 95 Strategic Product & System Management ATM Multiservice Networks Data Backbone & Optical Services Division Ericsson Telecom AB From Sean.Hinde@REDACTED Thu Sep 13 12:24:10 2001 From: Sean.Hinde@REDACTED (Sean Hinde) Date: Thu, 13 Sep 2001 11:24:10 +0100 Subject: Passing Pointers into and out of drivers Message-ID: <402DD461F109D411977E0008C791C312039F63B1@IMP02MBX> Hi, The neatest solution I have come up with to a driver resource allocation problem is to pass a pointer to my linked list entry back to erlang as a 32 bit binary. This would then sent back to the driver to access the resource directly. I'm not sure if there are any issues with this apart from the obvious one of it being pretty unsafe in general! Any thoughts anyone? What about endian issues? Also, is there any (remotely approved) way to use existing erlang mechanisms like ets tables within drivers? Thanks, Sean NOTICE AND DISCLAIMER: This email (including attachments) is confidential. If you have received this email in error please notify the sender immediately and delete this email from your system without copying or disseminating it or placing any reliance upon its contents. We cannot accept liability for any breaches of confidence arising through use of email. Any opinions expressed in this email (including attachments) are those of the author and do not necessarily reflect our opinions. We will not accept responsibility for any commitments made by our employees outside the scope of our business. We do not warrant the accuracy or completeness of such information. From david@REDACTED Thu Sep 13 14:59:54 2001 From: david@REDACTED (david wallin) Date: Thu, 13 Sep 2001 14:59:54 +0200 Subject: ANN: ERLMT - Mersenne Twister in Erlang Message-ID: <20010913125952.IUR6040.fep03-svc.swip.net@localhost> Hi all, I am happy to announce the availability of Mersenne Twister (MT) in erlang. MT is a Random Number Generator (RNG) that is supposed to be both fast and have an astronomical period of 2**19937-1. For more information about MT in general, please take a look at http://www.math.keio.ac.jp/~matumoto/emt.html. The erlang version is available at http://www.wallin.cx. The package is named 'erlmt.tar.gz' and contains a module 'mt19937' that is an MT implementation in erlang. The package also contains an erl driver to a MT implementation in C. Due to licensing issues, I did not include it but you also need to get a file called 'cokus.c' to get this working. It should be available on the sites above. The MT in erlang is unfortuantely, really slow, improvements are welcome. The erl driver is somewhat faster than the random module included in erlang but still really slow. Benchmarks. All results are the number of random numbers generated during 10 seconds. This was done on a 500 MHz iBook running R7B-3 under OS X (v10.0.3). Running 'random' module included in erlang : Eshell V5.0.2.4 (abort with ^G) 1> mt:test_original(). 453310 2> mt:test_original(). 461197 3> mt:test_original(). 453171 4> mt:test_original(). 452647 5> mt:test_original(). 451646 Running the erl driver : 6> mt:test_batch(). 526033 7> mt:test_batch(). 527492 8> mt:test_batch(). 525341 9> mt:test_batch(). 520284 10> mt:test_batch(). 519777 Running the erlang implementation of MT : 11> mt19937:test(). 162603 12> mt19937:test(). 154129 13> mt19937:test(). 168823 14> mt19937:test(). 159121 15> mt19937:test(). 163391 Any comments, suggestions, improvements and bugfixes are welcome. Also, I would be interested in similar benchmarks with the HiPE compiler. --david. From mickael.remond@REDACTED Thu Sep 13 16:28:50 2001 From: mickael.remond@REDACTED (Mickael Remond) Date: Thu, 13 Sep 2001 16:28:50 +0200 (MEST) Subject: Uppercase and Lowercase Message-ID: <1000391330.3ba0c2a2b32ea@imp.pro.proxad.net> Hello all, What would you think of adding uppercase functions and lowercase function in the string module of the STDLIB ? This function are supposed to return a all uppercase or all lower case string from a given input. I do not know if I am alone but I very often need these functions and from what I know they are not present in erlang STDLIB. Cheers, -- Micka?l R?mond http://www.erlang-fr.org From Chandrashekhar.Mullaparthi@REDACTED Thu Sep 13 17:01:06 2001 From: Chandrashekhar.Mullaparthi@REDACTED (Chandrashekhar Mullaparthi) Date: Thu, 13 Sep 2001 16:01:06 +0100 Subject: Uppercase and Lowercase Message-ID: <402DD461F109D411977E0008C791C31205E06100@IMP02MBX> I need them too! These functions were suggested a while ago on this mailing list - but I guess it didn't make it to stdlib. We have our own "shlib" which has such useful stufff - it stands for shared library or sean-hinde-library :) Chandru > -----Original Message----- > From: Mickael Remond [mailto:mickael.remond@REDACTED] > Sent: 13 September 2001 15:29 > To: erlang-questions@REDACTED > Subject: Uppercase and Lowercase > > > Hello all, > > What would you think of adding uppercase functions and > lowercase function in > the string module of the STDLIB ? This function are supposed > to return a all > uppercase or all lower case string from a given input. > > I do not know if I am alone but I very often need these > functions and from what > I know they are not present in erlang STDLIB. > > Cheers, > > -- > Micka?l R?mond > http://www.erlang-fr.org > NOTICE AND DISCLAIMER: This email (including attachments) is confidential. If you have received this email in error please notify the sender immediately and delete this email from your system without copying or disseminating it or placing any reliance upon its contents. We cannot accept liability for any breaches of confidence arising through use of email. Any opinions expressed in this email (including attachments) are those of the author and do not necessarily reflect our opinions. We will not accept responsibility for any commitments made by our employees outside the scope of our business. We do not warrant the accuracy or completeness of such information. From luke@REDACTED Thu Sep 13 17:47:50 2001 From: luke@REDACTED (Luke Gorrie) Date: 13 Sep 2001 17:47:50 +0200 Subject: enfs Message-ID: Hi all, I've got a fun hack: it's a small NFS server written in Erlang, which has a "/proc" clone as an example. Downloadable at http://www.bluetail.com/~luke/misc/nfs-1.0.tar.gz The proc-fs looks like this: luke@REDACTED:~/misc/t/nfs-1.0/mnt$ ls 0.0.0 0.18.0 0.29.0 erl_prim_loader nfs_mountd 0.10.0 0.19.0 0.31.0 error_logger nfs_rpc_nfsd 0.11.0 0.2.0 0.4.0 file_server nfs_server 0.12.0 0.20.0 0.5.0 global_group rex 0.13.0 0.21.0 0.7.0 global_name_server user 0.14.0 0.22.0 0.8.0 inet_db 0.15.0 0.23.0 0.9.0 init 0.16.0 0.24.0 application_controller kernel_safe_sup 0.17.0 0.28.0 code_server kernel_sup luke@REDACTED:~/misc/t/nfs-1.0/mnt$ ls inet_db current_function group_leader message_queue_len registered_name dictionary heap_size messages stack_size error_handler initial_call priority status garbage_collection links reductions trap_exit luke@REDACTED:~/misc/t/nfs-1.0/mnt$ cat inet_db/heap_size 233 luke@REDACTED:~/misc/t/nfs-1.0/mnt$ cat inet_db/current_function {gen_server,loop,6} luke@REDACTED:~/misc/t/nfs-1.0/mnt$ grep gen_server */current_function 0.10.0/current_function:{gen_server,loop,6} 0.11.0/current_function:{gen_server,loop,6} 0.12.0/current_function:{gen_server,loop,6} 0.13.0/current_function:{gen_server,loop,6} 0.14.0/current_function:{gen_server,loop,6} 0.15.0/current_function:{gen_server,loop,6} 0.16.0/current_function:{gen_server,loop,6} 0.21.0/current_function:{gen_server,loop,6} 0.22.0/current_function:{gen_server,loop,6} 0.29.0/current_function:{gen_server,loop,6} 0.5.0/current_function:{gen_server,loop,6} 0.9.0/current_function:{gen_server,loop,6} application_controller/current_function:{gen_server,loop,6} code_server/current_function:{gen_server,loop,6} file_server/current_function:{gen_server,loop,6} global_group/current_function:{gen_server,loop,6} global_name_server/current_function:{gen_server,loop,6} inet_db/current_function:{gen_server,loop,6} kernel_safe_sup/current_function:{gen_server,loop,6} kernel_sup/current_function:{gen_server,loop,6} nfs_mountd/current_function:{gen_server,loop,6} rex/current_function:{gen_server,loop,6} luke@REDACTED:~/misc/t/nfs-1.0/mnt$ From jonas.aman@REDACTED Thu Sep 13 20:46:41 2001 From: jonas.aman@REDACTED (=?iso-8859-1?Q?Jonas_=C5man?=) Date: Thu, 13 Sep 2001 20:46:41 +0200 Subject: SV: Uppercase and Lowercase In-Reply-To: <402DD461F109D411977E0008C791C31205E06100@IMP02MBX> Message-ID: Ive found the functions you are looking for. They are located in the httpd_util module, and are named to_ lower/1, and to_upper/1. Strange place to keep them though... =) /Jonas ?man -----Ursprungligt meddelande----- Fr?n: owner-erlang-questions@REDACTED [mailto:owner-erlang-questions@REDACTED]F?r Chandrashekhar Mullaparthi Skickat: den 13 september 2001 17:01 Till: 'Mickael Remond'; erlang-questions@REDACTED ?mne: RE: Uppercase and Lowercase I need them too! These functions were suggested a while ago on this mailing list - but I guess it didn't make it to stdlib. We have our own "shlib" which has such useful stufff - it stands for shared library or sean-hinde-library :) Chandru > -----Original Message----- > From: Mickael Remond [mailto:mickael.remond@REDACTED] > Sent: 13 September 2001 15:29 > To: erlang-questions@REDACTED > Subject: Uppercase and Lowercase > > > Hello all, > > What would you think of adding uppercase functions and > lowercase function in > the string module of the STDLIB ? This function are supposed > to return a all > uppercase or all lower case string from a given input. > > I do not know if I am alone but I very often need these > functions and from what > I know they are not present in erlang STDLIB. > > Cheers, > > -- > Micka?l R?mond > http://www.erlang-fr.org > NOTICE AND DISCLAIMER: This email (including attachments) is confidential. If you have received this email in error please notify the sender immediately and delete this email from your system without copying or disseminating it or placing any reliance upon its contents. We cannot accept liability for any breaches of confidence arising through use of email. Any opinions expressed in this email (including attachments) are those of the author and do not necessarily reflect our opinions. We will not accept responsibility for any commitments made by our employees outside the scope of our business. We do not warrant the accuracy or completeness of such information. From matthias@REDACTED Fri Sep 14 10:08:04 2001 From: matthias@REDACTED (Matthias Lang) Date: Fri, 14 Sep 2001 10:08:04 +0200 Subject: memory insanity Message-ID: <15265.47844.974315.265044@antilipe.corelatus.se> Hi, Using R7B-3, this program bloats at a rate of about 100k per second on my intel linux box. It does similar things on my PPC board. I've watched it go up to 20Mb (using 'top') before stopping it. I'd much appreciate it if a few people could confirm this result, a result from a commercial solaris version would be interesting too. Run it in the same directory as the .beam (it reads the .beam file): leaky:go(). Matthias ---------------------------------------------------------------------- -module(leaky). -author('matthias@REDACTED'). -compile(export_all). -record(state, {eth_curr, eth_prev}). go() -> loop(#state{}). loop(State) -> State1 = update_ethernet(State), erlang:garbage_collect(), loop(State1). update_ethernet(State) -> Bin = grab_eth(), Prev = State#state.eth_curr, State#state{eth_curr = {now(), Bin}, eth_prev = Prev}. grab_eth() -> {ok, IF} = file:open("leaky.beam", [raw, binary, read]), {ok, Bin} = file:read(IF, 2000), ok = file:close(IF), Bin. From srl@REDACTED Fri Sep 14 10:22:44 2001 From: srl@REDACTED (Steve Langstaff) Date: Fri, 14 Sep 2001 09:22:44 +0100 Subject: memory insanity Message-ID: <01C13CFE.CFF0F780.srl@terminus.ericsson.se> Just out of interest... does it leak by (sizeof(.beam) x number of file reads) ? -- Steve L. On 14 September 2001 09:08, Matthias Lang [SMTP:matthias@REDACTED] wrote: > Hi, > > Using R7B-3, this program bloats at a rate of about 100k per second on > my intel linux box. It does similar things on my PPC board. I've > watched it go up to 20Mb (using 'top') before stopping it. > > I'd much appreciate it if a few people could confirm this result, a > result from a commercial solaris version would be interesting too. > > Run it in the same directory as the .beam (it reads the .beam file): > > leaky:go(). > > Matthias > > ---------------------------------------------------------------------- > -module(leaky). > -author('matthias@REDACTED'). > > -compile(export_all). > -record(state, {eth_curr, eth_prev}). > > go() -> loop(#state{}). > > loop(State) -> > State1 = update_ethernet(State), > erlang:garbage_collect(), > loop(State1). > > update_ethernet(State) -> > Bin = grab_eth(), > Prev = State#state.eth_curr, > State#state{eth_curr = {now(), Bin}, eth_prev = Prev}. > > grab_eth() -> > {ok, IF} = file:open("leaky.beam", [raw, binary, read]), > {ok, Bin} = file:read(IF, 2000), > ok = file:close(IF), > Bin. From rv@REDACTED Fri Sep 14 10:35:41 2001 From: rv@REDACTED (Robert Virding) Date: Fri, 14 Sep 2001 10:35:41 +0200 Subject: memory insanity In-Reply-To: Your message of "Fri, 14 Sep 2001 10:08:04 +0200." <15265.47844.974315.265044@antilipe.corelatus.se> Message-ID: <200109140835.f8E8Zfl16986@duva.bluetail.com> Matthias Lang writes: >Hi, > >Using R7B-3, this program bloats at a rate of about 100k per second on >my intel linux box. It does similar things on my PPC board. I've >watched it go up to 20Mb (using 'top') before stopping it. > >I'd much appreciate it if a few people could confirm this result, a >result from a commercial solaris version would be interesting too. > >Run it in the same directory as the .beam (it reads the .beam file): > > leaky:go(). > >Matthias I tried it with new R8a test release and there were no problems there. The memory usage stayed happily at 4904 Mb for a few minutes. Robert From Bruce@REDACTED Fri Sep 14 10:46:31 2001 From: Bruce@REDACTED (Bruce Fitzsimons) Date: Fri, 14 Sep 2001 20:46:31 +1200 Subject: memory insanity References: <15265.47844.974315.265044@antilipe.corelatus.se> Message-ID: <016101c13cf9$c076a9d0$4021970a@neolineas.com> Using R7B-3 on an intel box with 160MB ram, its at 50M after 3m 30s and still going... Using otp_src_P8A-20010902-SNAPSHOT (not the most recent, not using HiPE) on the same box, its stable at about 4M (no change after startup). So it looks like there was a leak in R7B-3 and it has been fixed. Cheers, Bruce From raimo@REDACTED Fri Sep 14 11:01:42 2001 From: raimo@REDACTED (Raimo Niskanen) Date: Fri, 14 Sep 2001 11:01:42 +0200 Subject: memory insanity References: <15265.47844.974315.265044@antilipe.corelatus.se> Message-ID: <3BA1C776.3DF02D43@erix.ericsson.se> There is a leak in R7B-3 that leaks some 40 bytes per closed file. Patch follows. *** erts/emulator/drivers/common/efile_drv.c@@/main/release/r7b01_patch/OSE_R7B-3 Fri May 18 16:41:09 2001 --- erts/emulator/drivers/common/efile_drv.c@@/main/release/r7b01_patch/LATEST Mon Aug 27 18:50:44 2001 *************** *** 222,228 **** d->command = FILE_CLOSE; DRIVER_ASYNC(2, desc, KEY, invoke_close, (void *) d, free_data); - return 0; } #endif } --- 222,227 ---- / Raimo Niskanen, Erlang/OTP, Ericsson UAB. Matthias Lang wrote: > > Hi, > > Using R7B-3, this program bloats at a rate of about 100k per second on > my intel linux box. It does similar things on my PPC board. I've > watched it go up to 20Mb (using 'top') before stopping it. > > I'd much appreciate it if a few people could confirm this result, a > result from a commercial solaris version would be interesting too. > > Run it in the same directory as the .beam (it reads the .beam file): > > leaky:go(). > > Matthias > > ---------------------------------------------------------------------- > -module(leaky). > -author('matthias@REDACTED'). > > -compile(export_all). > -record(state, {eth_curr, eth_prev}). > > go() -> loop(#state{}). > > loop(State) -> > State1 = update_ethernet(State), > erlang:garbage_collect(), > loop(State1). > > update_ethernet(State) -> > Bin = grab_eth(), > Prev = State#state.eth_curr, > State#state{eth_curr = {now(), Bin}, eth_prev = Prev}. > > grab_eth() -> > {ok, IF} = file:open("leaky.beam", [raw, binary, read]), > {ok, Bin} = file:read(IF, 2000), > ok = file:close(IF), > Bin. From matthias@REDACTED Fri Sep 14 12:26:13 2001 From: matthias@REDACTED (Matthias Lang) Date: Fri, 14 Sep 2001 12:26:13 +0200 Subject: memory insanity In-Reply-To: <01C13CFE.CFF0F780.srl@terminus.ericsson.se> References: <01C13CFE.CFF0F780.srl@terminus.ericsson.se> Message-ID: <15265.56133.679457.57148@antilipe.corelatus.se> Steve Langstaff writes: > Just out of interest... does it leak by (sizeof(.beam) x number of file reads) ? No. Very roughly (just looking at top), my BEAM is 3.5M to start with, after 100k loops, it's about 5M, so I'd put the leak somewhere in the vicinity of 15 bytes/loop. Raimo just posted a patch and noted that the patch fixes a 40 byte leak in file:close. My measurement isn't inconsistent with that. I haven't tested the patch yet (my main machine currently doesn't work and compiling Erlang on my old pentium takes forever). Matthias From kent@REDACTED Fri Sep 14 17:46:48 2001 From: kent@REDACTED (Kent Boortz) Date: 14 Sep 2001 17:46:48 +0200 Subject: R8B PRE-RELEASES In-Reply-To: Kent Boortz's message of "03 Sep 2001 17:46:29 +0200" References: Message-ID: ************************ R8B PRE-RELEASES ************************ There are new prereleases. You find the OpenSource version and Windows binary version at http://www.erlang.org/download/prereleases/ and the commercial releases in http://www.erlang.se/lic_area/protected/releases/otp_sunos5_P8A-20010913-SNAPSHOT.tar.gz http://www.erlang.se/lic_area/protected/releases/otp_solaris8_P8A-20010913-SNAPSHOT.tar.gz Some general notes and notes about changes since the last prereleases: - Most of Per Bergqvist's patch to remove warnings has been applied. - Use of the atom `try' will generate compiler warnings in preparation for add the try/catch construct in R9. - The problem reaching the Unix man pages for 'sofs' and 'xref' with "erl -man " has been fixed. - You can find a comparison of the speed for some constructs between R7 and R8 (lower numbers are better) in http://www.ericsson.com/cslab/~bjorn/benchmarks2/ - There is some new documentation, one short "Some hints that may get you started faster" at the first page for those new to Erlang/OTP and one "Efficiency Guide" in the system documentation section http://www.erlang.org/doc/p8a/doc/ The OTP Team From vances@REDACTED Sat Sep 15 01:08:07 2001 From: vances@REDACTED (Vance Shipley) Date: Fri, 14 Sep 2001 19:08:07 -0400 Subject: Makefile Message-ID: I finally found out what the problem with my Makefile syntax for building releases was. I was using: %.tar.gz: all %.boot erl -noshell -s systools make_tar $* -s erlang halt With this I kept getting truncated tar files. The reason for which seems to be that erlang:halt/0 is a nasty way to terminate things. The suggestions I had originally gotten on how to run something from the Unix command line was to use the form: erl -noshell -s -s erlang halt This was probably the best way at one time but now it seems the best syntax would be: erl -noshell -run -run init stop This allows a graceful shutdown, and gives everything time to finish up. So now my Makefile syntax is: ERL = erl ERLC = erlc ERLCFLAGS = +no_debug_info -W -v %.beam:%.erl $(ERLC) $(ERLCFLAGS) $< %.boot:%.rel $(ERLC) $< %.tar.gz: all %.boot $(ERL) -noshell -run systools make_tar $* -run init stop %.bin:%.mib $(ERLC) $< Since this was a thorn in my side for such a long time, and the list hadn't given me an answer when I originally asked, I thought I'd share it. -Vance Vance Shipley Motivity Telecom Inc. +1 519 579 5816 From vances@REDACTED Sat Sep 15 03:18:14 2001 From: vances@REDACTED (Vance Shipley) Date: Fri, 14 Sep 2001 21:18:14 -0400 Subject: init:boot/1 In-Reply-To: Message-ID: The example given in the documentation for init:boot/1 shows the following example: erl -run foo -run foo bar -run foo bar baz 1 2 This starts the Erlang runtime system and then evaluates the following Erlang functions: foo:start() foo:bar() foo:bar([baz, "1", "2"]). Fine, but what if I want?: foo:bar(baz, "1", "2"). There doesn't seem to be a syntax for that. :( I know I could use escript but really. -Vance From sonyroy143@REDACTED Fri Sep 14 20:59:54 2001 From: sonyroy143@REDACTED (Raveen Josh) Date: Sat, 15 Sep 2001 00:29:54 +0530 Subject: Congraualations.... Message-ID: <200109141814.XAA23616@hd1.vsnl.net.in> An HTML attachment was scrubbed... URL: From matthias@REDACTED Sat Sep 15 09:33:00 2001 From: matthias@REDACTED (matthias@REDACTED) Date: Sat, 15 Sep 2001 09:33:00 +0200 Subject: memory instanity (solved by raimo's patch) Message-ID: <15267.1068.436451.211644@beladrome.corelatus.se> Hi, FYI: Not surprisingly, Raimo's patch made the test case I posted behave ok. I then cross compiled and ran my application on our PPC860 board overnight and the bloat is clearly gone. It took me two weeks (wall time) of testing to realise that our 'mystery crashes in the middle of the night' were due to a memory problem, and two full days to isolate it and write an "obviously correct, obviously failing" test case. Within an hour of me posting the test case, Raimo posted a patch. Impressive. Matthias From raimo@REDACTED Sat Sep 15 09:55:39 2001 From: raimo@REDACTED (Raimo Niskanen) Date: Sat, 15 Sep 2001 09:55:39 +0200 Subject: init:boot/1 References: , Message-ID: <3BA3097B.664DC120@erix.ericsson.se> Vance Shipley wrote: > > The example given in the documentation for init:boot/1 > shows the following example: > > erl -run foo -run foo bar -run foo bar baz 1 2 > > This starts the Erlang runtime system and then > evaluates the following Erlang functions: > > foo:start() > foo:bar() > foo:bar([baz, "1", "2"]). > > Fine, but what if I want?: > > foo:bar(baz, "1", "2"). > > There doesn't seem to be a syntax for that. :( > The possibilities are a bit limited, but the intention is just to be able to call a tailored function in a module of your own, not to call any function in any module with any arguments. As an exercise to the reader it is quite possible to write a function my:eval([String]) that parses String and calls any functions with any arguments: erl -run my eval 'foo:bar(baz, "1", "2"). init:stop().' Hint: use erl_scan and erl_parse. Please note that there seems to be a documentation error here: erl -run foo bar baz 1 2 really calls foo:bar(["baz", "1", "2"]), not foo:bar([baz, "1", "2"]). You can also try the following trick: echo "erlang:system_info(system_version). init:stop()." | erl -oldshell if you are a Unix user. Or from a shell script: #!/bin/sh erl -oldshell <<-EOF erlang:system_info(system_version). init:stop(). EOF The -oldshell argument gives a shell that does not require a terminal. Beware of the whitespaces after the dots. They are syntactically essential. / Raimo Niskanen, Erlang/OTP, Ericsson UAB. From raimo@REDACTED Sat Sep 15 10:17:08 2001 From: raimo@REDACTED (Raimo Niskanen) Date: Sat, 15 Sep 2001 10:17:08 +0200 Subject: memory instanity (solved by raimo's patch) References: <15267.1068.436451.211644@beladrome.corelatus.se> Message-ID: <3BA30E84.C032197A@erix.ericsson.se> matthias@REDACTED wrote: > > > Within an hour of me posting the test case, Raimo posted a > patch. Impressive. > Not that impressive. The bug appeared on the Erlang Maintainers list around Aug 22 (i think it was on Erlang Questions too), and the commercial patch has been around since end of August (erl_303, erts-5.0.2.9). Now is a new open source release R7B-4 on the way out that fixes not only this bug. / Raimo Niskanen, Erlang/OTP, Ericsson UAB. From mickael.remond@REDACTED Sun Sep 16 16:33:47 2001 From: mickael.remond@REDACTED (Mickael Remond) Date: Sun, 16 Sep 2001 16:33:47 +0200 Subject: Manderlbot: an IRC bot written in Erlang Message-ID: <20010916163347.A7028@erlang-fr.org> I just released the new version of Manderlbot, an Erlang written IRC bot. You can download it at: http://prdownloads.sourceforge.net/manderlbot/manderlbot-0.4.1.tar.gz There is still a lot of work to do but, ultimatly, we are aiming at writing a bot management system (I mean a program able to manage several bots at the same time, that could lead to Internet Bot Service provider activity ;-) and to leverage fault-tolerance and high-avaibility Erlang characteristics. If you want to participate, you could contribute to the fun part: the bot standard "behaviours" development. We can discuss that on the mailing list or a the #erlang IRC channel (Where the bot is currently running). Cheers, -- Micka?l R?mond http://www.erlang-fr.org/ From mickael.remond@REDACTED Sun Sep 16 17:36:24 2001 From: mickael.remond@REDACTED (Mickael Remond) Date: Sun, 16 Sep 2001 17:36:24 +0200 Subject: Hipe compilation on Linux x86 Message-ID: <20010916173624.A21100@erlang-fr.org> Hello, I am trying to compile Hipe on Linux x86. It seem that the command make hlib need the file: rtl/hipe_literals.hrl to compile hipe_x86_registers.erl but the .hrl file does not seem to be in the distribution. Am I missing something ? And another question by the way: Will Hipe x86 work on Windows versions ? Thank you for your help. -- Micka?l R?mond http://www.erlang-fr.org/ From happi@REDACTED Sun Sep 16 18:51:47 2001 From: happi@REDACTED (Happi) Date: Sun, 16 Sep 2001 18:51:47 +0200 Subject: Hipe compilation on Linux x86 References: <20010916173624.A21100@erlang-fr.org> Message-ID: <005401c13ecf$e025f1a0$4cdafea9@LISA> ----- Original Message ----- From: "Mickael Remond" > Hello, > > I am trying to compile Hipe on Linux x86. > It seem that the command make hlib need the file: > rtl/hipe_literals.hrl to compile hipe_x86_registers.erl > but the .hrl file does not seem to be in the distribution. > Am I missing something ? The file is created when makeing the emulator. (It contains information about C-datastructures in the runtime system used by native code.) > And another question by the way: Will Hipe x86 work on Windows versionn ? HiPE x86 will not work on Windows. One reason is that HiPE is using the machine register %esp to point to the stack of the running Erlang process which usually is quite small. Since signal handlers usually are delivered onto the current stack which in this case might be to small there might be some problems. We have a solution for this on Linux (with glibc 2.2 or 2.1) and Solaris 8 but not for windows. Currently we have no plans to support windows. (Feel free to try it out on Windows but I suspect it will crash ;) /Erik From hokan.stenholm@REDACTED Mon Sep 17 00:42:00 2001 From: hokan.stenholm@REDACTED (=?iso-8859-1?Q?H=E5kan_Stenholm?=) Date: Mon, 17 Sep 2001 00:42:00 +0200 Subject: HIPE support for PPC ? Message-ID: <200109162240.f8GMe7m03703@d1o1.telia.com> Are there any plans for a PPC support (MacOS X or other) ? What are the future plans for HIPE ? What (if any) architectures are going to be supported - beyond Sparc and Intel ? From kramer@REDACTED Mon Sep 17 08:32:53 2001 From: kramer@REDACTED (Reto Kramer) Date: Sun, 16 Sep 2001 23:32:53 -0700 Subject: Q: where do these tcp connections come from ? Message-ID: I'm surprised to find a number of tcp connections that I cannot quite figure out why they were created. Maybe someone familiar with the inner workings of the net_kernel can help me out? Two 5.0.2 nodes are running on the same Win2K box. I can see the 4 tcp links from the two nodes to the port daemon (1/2 and 3/4 in the netstat below). Afterward I ping/pong node b from node a and see two more connections (5/6). All is fine. Any further ping/pong among a and b is multiplex over the existing connections. Now the funny thing is that for each "world_list" of the form: net_adm:world_list([deepthought],verbose). Pinging b@REDACTED -> pong Pinging a@REDACTED -> pong [b@REDACTED,a@REDACTED] I find a new connection that was opened and waits to be cleaned up (3 times world_list and I got 7,8 and 9). Please note that no new machine and no new node was involved - it's all on the deepthought box. The connections look as if they were made to the port daemon (4306). Q: is there a specific reason why the existing connection (e.g. 3) could not have been used for the world_list traffic? Q: from a naive look at world_list, ping and gen:call I cannot figure out why world_list behaves differently from a plain "ping" in terms of connection multiplexing. Can someone explain why? $ netstat Proto Local Address Foreign Address State 1 TCP deepthought:1495 deepthought:4369 ESTABLISHED 2 TCP deepthought:4369 deepthought:1495 ESTABLISHED 3 TCP deepthought:1501 deepthought:4369 ESTABLISHED 4 TCP deepthought:4369 deepthought:1501 ESTABLISHED 5 TCP deepthought:1493 deepthought:1505 ESTABLISHED 6 TCP deepthought:1505 deepthought:1493 ESTABLISHED 7 TCP deepthought:4369 deepthought:1504 TIME_WAIT 8 TCP deepthought:4369 deepthought:1507 TIME_WAIT 9 TCP deepthought:4369 deepthought:1508 TIME_WAIT cheers, - Reto From etxuwig@REDACTED Mon Sep 17 12:07:51 2001 From: etxuwig@REDACTED (Ulf Wiger) Date: Mon, 17 Sep 2001 12:07:51 +0200 (MET DST) Subject: etk demo: mines Message-ID: I don't know who feels responsible for the "mines" example of etk, but here goes: I just thought I'd run through it quickly to see if it'd be a good example of graphics programming in Erlang, but the darn thing trapped me in what seemed to be a mines counting bug. Of course I couldn't let it go without trying to find the bug... After a while (too long), I realised that there was another row of mines below the lower bound of the window! The following diff makes the game a lot easier to play: etxuwig@REDACTED > diff tkmines.erl old/tkmines.erl 65c65 < tk:wm([geometry, W, "300x330+100+200"]), --- > tk:wm([geometry, W, "300x300+100+200"]), I will bluntly assume that the 30 pixels were stolen by the menu bar. /Uffe -- Ulf Wiger tfn: +46 8 719 81 95 Senior System Architect mob: +46 70 519 81 95 Strategic Product & System Management ATM Multiservice Networks Data Backbone & Optical Services Division Ericsson Telecom AB From kostis@REDACTED Mon Sep 17 12:59:47 2001 From: kostis@REDACTED (Kostis Sagonas) Date: Mon, 17 Sep 2001 12:59:47 +0200 (MET DST) Subject: Hipe compilation on Linux x86 In-Reply-To: Mail from '"Happi" ' dated: Sun, 16 Sep 2001 18:51:47 +0200 Message-ID: <200109171059.MAA15250@harpo.it.uu.se> "Happi" replied to Mickael: > ----- Original Message ----- > From: "Mickael Remond" > > Hello, > > > > I am trying to compile Hipe on Linux x86. > > It seem that the command make hlib need the file: > > rtl/hipe_literals.hrl to compile hipe_x86_registers.erl > > but the .hrl file does not seem to be in the distribution. > > Am I missing something ? > > The file is created when makeing the emulator. > (It contains information about C-datastructures in the runtime system used > by native code.) Just in case it was not 100% clear from Happi's reply, the recommended way to build a HiPE-enabled Erlang/OTP system is to do: ./configure --enable-hipe ./make ("make hlib" is a shortcut added just for the convenience of HiPE developers to compile only the lib/hipe subdirectory. Unless one decides to modify a file in that subdirectory, not recommeded btw, there is no reason to use the "make hlib" shortcut). Kostis. From comini@REDACTED Mon Sep 17 12:19:35 2001 From: comini@REDACTED (Marco Comini) Date: Mon, 17 Sep 2001 12:19:35 +0200 Subject: [E-CFP] AGP'01 2nd CFP Message-ID: !!! We apologize if you receive this message more than once. !!! !!! Please circulate !!! ------------------------------------------------ APPIA-GULP-PRODE'01 Call for Participation 2001 JOINT CONFERENCE ON DECLARATIVE PROGRAMMING Evora, Portugal September 26-28 2001 http://www.di.uevora.pt/~agp01 Following APPIA-GULP-PRODE'00 in La Habana (Cuba) the next joint APPIA, GULP, and PRODE conference will be held in Evora (Portugal), in September 26-28, 2001. The aim of the Conference is to foster scientific meetings between Italian, Portuguese, Spanish and Latin America researchers, to improve the knowledge of the state of the art of declarative programming (through the invited talks) and to show the ongoing research done (through presentations of papers). There will be 22 research papers presented and two invited talks by D. Sacca and T. Swift. More information about the conference and registration details can be obtained at the conference web site: http://www.di.uevora.pt/~agp01 Note that special registration conditions for students are available. Conference Site: The Conference is organized by the University of Evora http://www.uevora.pt, founded in 1559 in Evora (Portugal). Evora http://www.evora.net , located 140km southeast of Lisbon, and 60 km from the spanish border, is one of the oldest cities in the Iberian Peninsula and it was classified by UNESCO as World Heritage. As a Roman Town it was known as "Liberalitas Julia" and it became important during the late Middle Ages. Evora is also reknown for its architecture, with monuments varying in style from the Gothic and Manueline to the Moorish. -------------- next part -------------- An HTML attachment was scrubbed... URL: From jvasco@REDACTED Mon Sep 17 20:02:20 2001 From: jvasco@REDACTED (Jose Vasconcellos) Date: Mon, 17 Sep 2001 14:02:20 -0400 Subject: GS with TCL/TK 8.3 Message-ID: <3BA63AAC.5060709@bellatlantic.net> Hello, Attached is a small patch to gstk_srv.tcl to allow the use of newer versions of TCL. I've tested extensively with esokoban :) The patch changes the TCL fileevent parameter from active to readable. Active is not supported in newer versions of TCL (I'm not sure what it does in older versions). Note: some changes to font commands in existing programs may be required to get the font size correct. Regards, Jose Vasconcellos -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: gstk_srv.diff URL: From mickael.remond@REDACTED Mon Sep 17 21:42:09 2001 From: mickael.remond@REDACTED (Mickael Remond) Date: Mon, 17 Sep 2001 21:42:09 +0200 Subject: GS with TCL/TK 8.3 In-Reply-To: <3BA63AAC.5060709@bellatlantic.net> References: <3BA63AAC.5060709@bellatlantic.net> Message-ID: <20010917214209.B1552@erlang-fr.org> Jose Vasconcellos (jvasco@REDACTED) wrote: > Hello, > > Attached is a small patch to gstk_srv.tcl to allow the use of newer > versions of TCL. I've tested extensively with esokoban :) The patch > changes the TCL fileevent parameter from active to readable. Active > is not supported in newer versions of TCL (I'm not sure what it does > in older versions). That is nice. I think TCL/TK 8.3 is faster than previous release. Do you know if the upgrade performance increase applies to Erlang GS program as well ? -- Micka?l R?mond http://www.erlang-fr.org/ From mickael.remond@REDACTED Mon Sep 17 21:39:52 2001 From: mickael.remond@REDACTED (Mickael Remond) Date: Mon, 17 Sep 2001 21:39:52 +0200 Subject: Hipe compilation on Linux x86 In-Reply-To: <200109171059.MAA15250@harpo.it.uu.se> References: ' <200109171059.MAA15250@harpo.it.uu.se> Message-ID: <20010917213952.A1552@erlang-fr.org> Kostis Sagonas (kostis@REDACTED) wrote: > "Happi" replied to Mickael: > > > ----- Original Message ----- > > From: "Mickael Remond" > > > Hello, > > > > > > I am trying to compile Hipe on Linux x86. > > > It seem that the command make hlib need the file: > > > rtl/hipe_literals.hrl to compile hipe_x86_registers.erl > > > but the .hrl file does not seem to be in the distribution. > > > Am I missing something ? > > > > The file is created when makeing the emulator. > > (It contains information about C-datastructures in the runtime system used > > by native code.) > > > Just in case it was not 100% clear from Happi's reply, the recommended > way to build a HiPE-enabled Erlang/OTP system is to do: > > ./configure --enable-hipe > ./make > > ("make hlib" is a shortcut added just for the convenience of HiPE developers > to compile only the lib/hipe subdirectory. Unless one decides to modify > a file in that subdirectory, not recommeded btw, there is no reason to use > the "make hlib" shortcut). This is what I managed to figure out by reading the makefiles. But when I launch those two commands the built fails (last prerelease) (log abstract as an attachement). The build is successfull if I launch the following sequence of commands: ./configure ./make ./configure --enable-hipe ./make Ok. Here is where I get. Now I am trying to figure out how I should use. Here is what I did: hipe:c(test, [o2]). and the result is: ** exited: {{case_clause,undefined}, [{hipe,o1_opts,0}, {hipe,opt_expansions,0}, {hipe,expand_options,1}, {hipe,compile,3}, {hipe,c,3}, {erl_eval,expr,3}, {erl_eval,exprs,4}, {shell,eval_loop,2}]} ** =ERROR REPORT==== 17-Sep-2001::21:35:49 === Error in process <0.31.0> with exit value: {{case_clause,undefined},[{hipe,o1_opts,0},{hipe,opt_expansions,0},{hipe,expand_options,1},{hipe,compile,3},{hipe,c,3},{erl_eval,expr,3},{erl_eval,exprs,4},{shell,eval_loop,2}]} Does anyone see what I am doing wrong ? -- Micka?l R?mond http://www.erlang-fr.org/ -------------- next part -------------- === Exiting application hipe make[2]: Leaving directory `/home/mikl/bin/otp_src_P8A-20010913-SNAPSHOT/lib/hipe' make[1]: Leaving directory `/home/mikl/bin/otp_src_P8A-20010913-SNAPSHOT/lib' make[1]: Entering directory `/home/mikl/bin/otp_src_P8A-20010913-SNAPSHOT/erts' make[2]: Entering directory `/home/mikl/bin/otp_src_P8A-20010913-SNAPSHOT/erts/start_scripts' sed -e 's;%SYS_VSN%;P8A;' \ -e 's;%ERTS_VSN%;2001.09.13;' \ -e 's;%KERNEL_VSN%;2001.09.13;' \ -e 's;%STDLIB_VSN%;2001.09.13;' \ start_clean.rel.src > start_clean.rel sed -e 's;%SYS_VSN%;P8A;' \ -e 's;%ERTS_VSN%;2001.09.13;' \ -e 's;%KERNEL_VSN%;2001.09.13;' \ -e 's;%STDLIB_VSN%;2001.09.13;' \ -e 's;%SASL_VSN%;2001.09.13;' \ start_sasl.rel.src > start_sasl.rel sed -e 's;%SYS_VSN%;P8A;' \ -e 's;%ERTS_VSN%;2001.09.13;' \ -e 's;%KERNEL_VSN%;2001.09.13;' \ -e 's;%STDLIB_VSN%;2001.09.13;' \ -e 's;%SASL_VSN%;2001.09.13;' \ -e 's;%OS_MON_VSN%;2001.09.13;' \ -e 's;%MNESIA_VSN%;2001.09.13;' \ -e 's;%SNMP_VSN%;2001.09.13;' \ -e 's;%INETS_VSN%;2001.09.13;' \ start_all_example.rel.src > start_all_example.rel erlc -W -pa /home/mikl/bin/otp_src_P8A-20010913-SNAPSHOT/erts/lib/sasl/ebin -I../../lib/kernel/ebin -I../../lib/stdlib/ebin -I../../lib/sasl/ebin start_clean.rel erlexec: Error 2 executing '/home/mikl/bin/otp_src_P8A-20010913-SNAPSHOT/bootstrap/../bin/i686-pc-linux-gnu/beam'. make[2]: *** [start_clean.script] Erreur 1 make[2]: Leaving directory `/home/mikl/bin/otp_src_P8A-20010913-SNAPSHOT/erts/start_scripts' make[1]: *** [local_setup] Erreur 2 make[1]: Leaving directory `/home/mikl/bin/otp_src_P8A-20010913-SNAPSHOT/erts' make: *** [local_setup] Erreur 2 From happi@REDACTED Mon Sep 17 22:27:16 2001 From: happi@REDACTED (Happi) Date: Mon, 17 Sep 2001 22:27:16 +0200 Subject: Hipe compilation on Linux x86 References: ' <200109171059.MAA15250@harpo.it.uu.se> <20010917213952.A1552@erlang-fr.org> Message-ID: <004901c13fb7$2562edd0$4cdafea9@LISA> It looks like you are running on an unsupported architecture (, or at least as if the system think you do). What does erlang:system_info(hipe_architecture) return? (It should say x86, this should be set by the makefile in erts/emulator During make, of the emulator, it should say something like: gcc ... -DHIPE_ARCHITECTURE=x86 ... -Ihipe ... When the system start it should say something like: Erlang (BEAM) emulator version 2001.09.05 [source] [hipe] (The [hipe] part is important.) ) ----- Original Message ----- From: "Mickael Remond" To: "Kostis Sagonas" ; Sent: Monday, September 17, 2001 9:39 PM Subject: Re: Hipe compilation on Linux x86 Kostis Sagonas (kostis@REDACTED) wrote: > "Happi" replied to Mickael: > > > ----- Original Message ----- > > From: "Mickael Remond" > > > Hello, > > > > > > I am trying to compile Hipe on Linux x86. > > > It seem that the command make hlib need the file: > > > rtl/hipe_literals.hrl to compile hipe_x86_registers.erl > > > but the .hrl file does not seem to be in the distribution. > > > Am I missing something ? > > > > The file is created when makeing the emulator. > > (It contains information about C-datastructures in the runtime system used > > by native code.) > > > Just in case it was not 100% clear from Happi's reply, the recommended > way to build a HiPE-enabled Erlang/OTP system is to do: > > ./configure --enable-hipe > ./make > > ("make hlib" is a shortcut added just for the convenience of HiPE developers > to compile only the lib/hipe subdirectory. Unless one decides to modify > a file in that subdirectory, not recommeded btw, there is no reason to use > the "make hlib" shortcut). This is what I managed to figure out by reading the makefiles. But when I launch those two commands the built fails (last prerelease) (log abstract as an attachement). The build is successfull if I launch the following sequence of commands: ./configure ./make ./configure --enable-hipe ./make Ok. Here is where I get. Now I am trying to figure out how I should use. Here is what I did: hipe:c(test, [o2]). and the result is: ** exited: {{case_clause,undefined}, [{hipe,o1_opts,0}, {hipe,opt_expansions,0}, {hipe,expand_options,1}, {hipe,compile,3}, {hipe,c,3}, {erl_eval,expr,3}, {erl_eval,exprs,4}, {shell,eval_loop,2}]} ** =ERROR REPORT==== 17-Sep-2001::21:35:49 === Error in process <0.31.0> with exit value: {{case_clause,undefined},[{hipe,o1_opts,0},{hipe,opt_expansions,0},{hipe,exp and_options,1},{hipe,compile,3},{hipe,c,3},{erl_eval,expr,3},{erl_eval,exprs ,4},{shell,eval_loop,2}]} Does anyone see what I am doing wrong ? -- Micka?l R?mond http://www.erlang-fr.org/ From mickael.remond@REDACTED Tue Sep 18 08:32:44 2001 From: mickael.remond@REDACTED (Mickael Remond) Date: Tue, 18 Sep 2001 08:32:44 +0200 Subject: Hipe compilation on Linux x86 In-Reply-To: <004901c13fb7$2562edd0$4cdafea9@LISA> References: ' <200109171059.MAA15250@harpo.it.uu.se> <20010917213952.A1552@erlang-fr.org> <004901c13fb7$2562edd0$4cdafea9@LISA> Message-ID: <20010918083244.B5968@erlang-fr.org> Happi (happi@REDACTED) wrote: > It looks like you are running on an unsupported architecture > (, or at least as if the system think you do). > What does > erlang:system_info(hipe_architecture) > return? > > (It should say x86, this should be set by the makefile in erts/emulator > > During make, of the emulator, it should say something like: > gcc ... -DHIPE_ARCHITECTURE=x86 ... -Ihipe ... > > When the system start it should say something like: > Erlang (BEAM) emulator version 2001.09.05 [source] [hipe] > (The [hipe] part is important.) > ) That is not the case. So it looks that my dirty try at forcing a failed hipe enabled compilation is not working. I will now try to find why the compilation does not work when you use configure with --enable-hipe. Thank you for your help :-) -- Micka?l R?mond http://www.erlang-fr.org/ From jvasco@REDACTED Tue Sep 18 14:41:29 2001 From: jvasco@REDACTED (Jose Vasconcellos) Date: Tue, 18 Sep 2001 08:41:29 -0400 Subject: GS with TCL/TK 8.3 In-Reply-To: <20010917214209.B1552@erlang-fr.org> References: <3BA63AAC.5060709@bellatlantic.net> <20010917214209.B1552@erlang-fr.org> Message-ID: <200109181245.f8ICjE105090@smtp003pub.verizon.net> On Monday 17 September 2001 15:42, Mickael Remond wrote: > Jose Vasconcellos (jvasco@REDACTED) wrote: > > Attached is a small patch to gstk_srv.tcl to allow the use of newer > > versions of TCL. ... > I think TCL/TK 8.3 is faster than previous release. Do you know if the > upgrade performance increase applies to Erlang GS program as well ? I haven't done enough testing to comment on performance. I was just curious what was involved in using the standard version of TCL that comes with Linux. Jose Vasconcellos From jmarant@REDACTED Tue Sep 18 17:46:03 2001 From: jmarant@REDACTED (=?iso-8859-1?q?J=E9r=F4me?= Marant) Date: 18 Sep 2001 17:46:03 +0200 Subject: bstring.erl in the next release? Message-ID: <8766ag8ptw.fsf@marant.org> Hi, I was seeking for a binary implementation of string functions and someone gracefully pointed me to the mail archive at http://www.erlang.org/ml-archive/erlang-questions/200103/msg00134.html What about integrating this module in the next Erlang release? (unless it is already there). Cheers, -- J?r?me Marant From per@REDACTED Tue Sep 18 18:33:20 2001 From: per@REDACTED (per@REDACTED) Date: Tue, 18 Sep 2001 18:33:20 +0200 (CEST) Subject: Q: where do these tcp connections come from ? In-Reply-To: Message-ID: <200109181633.f8IGXKf04054@tordmule.bluetail.com> "Reto Kramer" wrote: >Q: is there a specific reason why the existing connection (e.g. 3) could not >have been used for the world_list traffic? The epmd protocol is rather trivial (see erts/epmd/src/epmd_srv.c and erts/emulator/internal_doc/erl_ext_dist.txt): You send it a command and get a response - and then connection is closed, with the exception of the "alive-connection" that epmd uses for "monitoring" of the Erlang node. That connection is no exception to the first rule though, you can't send subsequent commands on it and the "monitoring" consists of noticing when the connection is closed. >Q: from a naive look at world_list, ping and gen:call I cannot figure out >why world_list behaves differently from a plain "ping" in terms of >connection multiplexing. Can someone explain why? In the process of word_list()'s work, names() is called to get a list of known nodes from epmd - it ends up needing a new connection for that request per above. In contrast, "ping" doesn't need to (directly or indirectly) make such a request, it already knows the node it's going to (the distribution mechanism will make a request on ping's behalf to find the port number of the destination node - but only if there isn't already an established connection to that node, of course). --Per Hedeland per@REDACTED From jerome.marant@REDACTED Tue Sep 18 21:58:23 2001 From: jerome.marant@REDACTED (=?iso-8859-1?q?J=E9r=F4me?= Marant) Date: 18 Sep 2001 21:58:23 +0200 Subject: Using UNIX sockets with Erlang Message-ID: <878zfcqnj4.fsf@marant.org> Hi, I'd like to use UNIX socket with Erlang but I did not find any module (both within the release and in contribs) supporting this. Can someone enlighten me? Has someone already implemented this? Thanks in advance. -- J?r?me Marant From fritchie@REDACTED Tue Sep 18 20:30:06 2001 From: fritchie@REDACTED (Scott Lystig Fritchie) Date: Tue, 18 Sep 2001 13:30:06 -0500 Subject: Using UNIX sockets with Erlang In-Reply-To: Message of "18 Sep 2001 21:58:23 +0200." <878zfcqnj4.fsf@marant.org> Message-ID: <200109181830.f8IIU6M29774@snookles.snookles.com> >>>>> "jm" == =?iso-8859-1?q?J=E9r=F4me?= Marant writes: jm> I'd like to use UNIX socket with Erlang but I did not find any jm> module (both within the release and in contribs) supporting this. I haven't picked apart the R8 pre-release to see if UNIX domain sockets were supported. They are not in R7 and previous releases. If I recall correctly, they aren't supported because they aren't portable to all platforms the Erlang VM runs on. Someone more official could probably give an official explanation. When I was at Sendmail I wrote a UNIX domain socket driver. It works (for the RPC application we were working on at that time), but it doesn't implement a lot of things that the TCP driver does (e.g. all the {packet, PacketType} encoding types). It's based on the TCP driver code, so eventually we need to bundle it up into a useful distribution and recontribute it back to the community as the license demands. If you're really, *really* itching to use it, I can try putting the source together into something sortof-useful. Let me know. Here's a not-so-casual observation: the current implementation of the Sendmail UNIX domain socket driver sends messages such as: {unixdom, Socket, Data}, {unixdom_closed, Socket}, {unixdom_error, Socket, Reason} ... mimicing: {tcp, Socket, Data}, {tcp_closed, Socket}, {tcp_error, Socket, Reason} However, it was a real pain to take code already written for TCP use and use UNIX domain sockets instead: all the message pattern matching had to be edited. In contrast, the underlying API for stream-type sockets is the same regardless of the family used. Ditto for datagram-type sockets. -Scott From Sean.Hinde@REDACTED Tue Sep 18 20:26:47 2001 From: Sean.Hinde@REDACTED (Sean Hinde) Date: Tue, 18 Sep 2001 19:26:47 +0100 Subject: Using UNIX sockets with Erlang Message-ID: <402DD461F109D411977E0008C791C312039F63DC@IMP02MBX> Hi J?r?me, > I'd like to use UNIX socket with Erlang but I did not > find any module (both within the release and in contribs) > supporting this. > > Can someone enlighten me? Has someone already implemented this? There is a driver for UNIX domain sockets in the examples directory of the kernel application. I would guess it should basically work but I've never tested it or used it, and I'm pretty certain Ericsson don't test it regularly.. There are some (incomplete) docs about it at: http://www.erlang.org/doc/r7b/erts-5.0.1/doc/html/alt_dist.html#3 Good luck, Sean > -- > J?r?me Marant > > NOTICE AND DISCLAIMER: This email (including attachments) is confidential. If you have received this email in error please notify the sender immediately and delete this email from your system without copying or disseminating it or placing any reliance upon its contents. We cannot accept liability for any breaches of confidence arising through use of email. Any opinions expressed in this email (including attachments) are those of the author and do not necessarily reflect our opinions. We will not accept responsibility for any commitments made by our employees outside the scope of our business. We do not warrant the accuracy or completeness of such information. From Sean.Hinde@REDACTED Tue Sep 18 21:09:19 2001 From: Sean.Hinde@REDACTED (Sean Hinde) Date: Tue, 18 Sep 2001 20:09:19 +0100 Subject: bstring.erl in the next release? Message-ID: <402DD461F109D411977E0008C791C312039F63DD@IMP02MBX> J?r?me, > I was seeking for a binary implementation of string functions > and someone gracefully pointed me to the mail archive at > > http://www.erlang.org/ml-archive/erlang-questions/200103/msg00134.html > > What about integrating this module in the next Erlang release? (unless > it is already there). I put together this driver sometime ago (finished off today) which does the str and chr functions quite efficiently. Warning: I am not a C programmer by trade. Please therefore treat with extreme caution. Please let me know if you find any gremlins.. I'd also appreciate any comments anyone may have on how this looks or how it could be improved. It could certainly do with a reverse function and perhaps rstr, rchr if anyone felt the urge. Of course if Ericsson made them into bifs that would be even better :) Usage: 1> bstring:open(). true 2> bstring:chr(<<1,1,1,1,230,1,1>>, 230). 5 3> bstring:str(<<0,1,2,3,4,5,6,7,8>>, <<4,5,6>>). 5 4> bstring:str(<<0,1,2,3,4,5,6,7,8>>, <<4,5,7>>). 0 Enjoy, Sean ---------bstring_drv.c----------- /* * Created: Sep 18 10:03:40 by shinde@REDACTED * Based on byteorder by tnt@REDACTED * Function: A little ddll driver for doing string searching. * * To compile (an example): * * gcc -I /opt/rcs/5.0.2.5/usr/include\ * -fpic -shared -o bstring_drv.so bstring_drv.c * */ #include #include "erl_driver.h" #define put_int32(i, s) {((char*)(s))[0] = (char)((i) >> 24) & 0xff; \ ((char*)(s))[1] = (char)((i) >> 16) & 0xff; \ ((char*)(s))[2] = (char)((i) >> 8) & 0xff; \ ((char*)(s))[3] = (char)((i) & 0xff);} #define get_int32(s) ((((unsigned char*) (s))[0] << 24) | \ (((unsigned char*) (s))[1] << 16) | \ (((unsigned char*) (s))[2] << 8) | \ (((unsigned char*) (s))[3])) #define CHR 1 #define STR 2 typedef unsigned char uchar; static ErlDrvData bstring_start(ErlDrvPort port, char *buf); static void bstring_stop(ErlDrvData drv_data); static int bstring_control(ErlDrvData drv_data, unsigned int command, char *buf, int len, char **rbuf, int rlen); static ErlDrvEntry bstring_driver_entry = { NULL, /* init */ bstring_start, bstring_stop, NULL, /* output */ NULL, /* ready_input */ NULL, /* ready_output */ "bstring_drv", NULL, /* finish */ NULL, /* handle */ bstring_control, NULL, /* timeout */ NULL /* outputv */ }; static ErlDrvPort erlang_port = (ErlDrvPort) -1; /* * Initialize and return a driver entry struct */ DRIVER_INIT(bstring_drv) { return &bstring_driver_entry; } static ErlDrvData bstring_start(ErlDrvPort port, char *buf) { if ((int) erlang_port != -1) { return ((ErlDrvData) -1); } erlang_port = port; return ((ErlDrvData) port); } static void bstring_stop(ErlDrvData desc) { erlang_port = ((ErlDrvPort) -1); return; } static int prefix(char *buf1, char *buf2, int n) { int j; for (j=0; j %%% Purpose : %%% Created : 18 Sep 2001 by %%%---------------------------------------------------------------------- -module(bstring). -author('sean@REDACTED'). -vsn('$Id: checksum.erl,v 1.2 2001/06/28 14:02:17 sean Exp $ '). -define(CHR, 1). -define(STR, 2). -define(u32(X3,X2,X1,X0), (((X3) bsl 24) bor ((X2) bsl 16) bor ((X1) bsl 8) bor (X0))). %%-compile(export_all). -export([open/0,chr/2, str/2]). open() -> erl_ddll:start(), erl_ddll:load_driver(".","bstring_drv"), Port = open_port({spawn, "bstring_drv"}, []), T = ets:new(bstring_server_table, [set, protected, named_table]), ets:insert(T, {port, Port}). chr(Bin, C) when binary(Bin), integer(C) -> [{port, Port}| _] = ets:lookup(bstring_server_table, port), [X3,X2,X1,X0] = erlang:port_control(Port, ?CHR, [C, Bin]), ?u32(X3,X2,X1,X0). str(Bin, Sub_bin) when binary(Bin), binary(Sub_bin) -> [{port, Port}| _] = ets:lookup(bstring_server_table, port), S1 = size(Bin), S2 = size(Sub_bin), [X3,X2,X1,X0] = erlang:port_control(Port, ?STR, [<>, Bin, Sub_bin]), ?u32(X3,X2,X1,X0). NOTICE AND DISCLAIMER: This email (including attachments) is confidential. If you have received this email in error please notify the sender immediately and delete this email from your system without copying or disseminating it or placing any reliance upon its contents. We cannot accept liability for any breaches of confidence arising through use of email. Any opinions expressed in this email (including attachments) are those of the author and do not necessarily reflect our opinions. We will not accept responsibility for any commitments made by our employees outside the scope of our business. We do not warrant the accuracy or completeness of such information. From jerome.marant@REDACTED Tue Sep 18 23:46:33 2001 From: jerome.marant@REDACTED (=?iso-8859-1?q?J=E9r=F4me?= Marant) Date: 18 Sep 2001 23:46:33 +0200 Subject: Using UNIX sockets with Erlang In-Reply-To: <402DD461F109D411977E0008C791C312039F63DC@IMP02MBX> References: <402DD461F109D411977E0008C791C312039F63DC@IMP02MBX> Message-ID: <871yl4qiiu.fsf@marant.org> Sean Hinde writes: > There is a driver for UNIX domain sockets in the examples directory of the > kernel application. I would guess it should basically work but I've never > tested it or used it, and I'm pretty certain Ericsson don't test it > regularly.. Well, when grepping within the latest sources, I found something like what you mentioned. However, it would be better to make it standard in order to avoid its inclusion in every source code that requires UNIX sockets. BTW, how do you use drivers? > > There are some (incomplete) docs about it at: > http://www.erlang.org/doc/r7b/erts-5.0.1/doc/html/alt_dist.html#3 It's like nothing was written about it ;-) Thanks. -- J?r?me Marant From jmarant@REDACTED Tue Sep 18 23:59:25 2001 From: jmarant@REDACTED (=?iso-8859-1?q?J=E9r=F4me?= Marant) Date: 18 Sep 2001 23:59:25 +0200 Subject: Using UNIX sockets with Erlang In-Reply-To: <200109181830.f8IIU6M29774@snookles.snookles.com> References: <200109181830.f8IIU6M29774@snookles.snookles.com> Message-ID: <87vgigp3cy.fsf@marant.org> Scott Lystig Fritchie writes: > I haven't picked apart the R8 pre-release to see if UNIX domain > sockets were supported. They are not in R7 and previous releases. If > I recall correctly, they aren't supported because they aren't portable > to all platforms the Erlang VM runs on. Someone more official could > probably give an official explanation. Of course, UNIX sockets don't work on other platforms than UNIX systems. However, you can always make the API behave differently with respect to the system it runs on, for instance returning some special error codes telling that there is no implementation for the function on that on that system. > > When I was at Sendmail I wrote a UNIX domain socket driver. It works > (for the RPC application we were working on at that time), but it > doesn't implement a lot of things that the TCP driver does (e.g. all > the {packet, PacketType} encoding types). It's based on the TCP > driver code, so eventually we need to bundle it up into a useful > distribution and recontribute it back to the community as the license > demands. Well, it seems that there is such a driver in the examples. However, I'd like to see it either as a contrib or as part of the Erlang release: there is no doubt that it more usefull than you can imagine. > > If you're really, *really* itching to use it, I can try putting the > source together into something sortof-useful. Let me know. I *really* want to use it. I'm currently coding a lightweight PostgreSQL client library in Erlang and I must be able to support both UNIX (for local connexions) and INET sockets. So yes, please release it ;-) ... > However, it was a real pain to take code already written for TCP use > and use UNIX domain sockets instead: all the message pattern matching > had to be edited. In contrast, the underlying API for stream-type > sockets is the same regardless of the family used. Ditto for > datagram-type sockets. I can help, of course ;-) Cheers, -- J?r?me Marant From jerome.marant@REDACTED Wed Sep 19 00:19:58 2001 From: jerome.marant@REDACTED (=?iso-8859-1?q?J=E9r=F4me?= Marant) Date: 19 Sep 2001 00:19:58 +0200 Subject: Using UNIX sockets with Erlang In-Reply-To: <871yl4qiiu.fsf@marant.org> References: <402DD461F109D411977E0008C791C312039F63DC@IMP02MBX> <871yl4qiiu.fsf@marant.org> Message-ID: <87pu8op2ep.fsf@marant.org> jerome.marant@REDACTED (J?r?me Marant) writes: > > > > There are some (incomplete) docs about it at: > > http://www.erlang.org/doc/r7b/erts-5.0.1/doc/html/alt_dist.html#3 > > It's like nothing was written about it ;-) No, it's better than nothing and should be sufficient ;-) However, in many cases I understand better with reading sources than reading the documention ... -- J?r?me Marant From etxuwig@REDACTED Tue Sep 18 23:23:41 2001 From: etxuwig@REDACTED (Ulf Wiger) Date: Tue, 18 Sep 2001 23:23:41 +0200 (MET DST) Subject: bstring.erl in the next release? In-Reply-To: <402DD461F109D411977E0008C791C312039F63DD@IMP02MBX> Message-ID: On Tue, 18 Sep 2001, Sean Hinde wrote: >I put together this driver sometime ago (finished off today) >which does the str and chr functions quite efficiently. >Warning: I am not a C programmer by trade. Please therefore >treat with extreme caution. Please let me know if you find any >gremlins.. One thing you might want to look at in OTP R8 is the named ports feature. It should let you skip the part where you lookup the port ID in an ets table. /Uffe -- Ulf Wiger tfn: +46 8 719 81 95 Senior System Architect mob: +46 70 519 81 95 Strategic Product & System Management ATM Multiservice Networks Data Backbone & Optical Services Division Ericsson Telecom AB From fritchie@REDACTED Wed Sep 19 00:18:05 2001 From: fritchie@REDACTED (Scott Lystig Fritchie) Date: Tue, 18 Sep 2001 17:18:05 -0500 Subject: Using UNIX sockets with Erlang In-Reply-To: Message of "18 Sep 2001 23:59:25 +0200." <87vgigp3cy.fsf@marant.org> Message-ID: <200109182218.f8IMI5M31178@snookles.snookles.com> >>>>> "jm" == =?iso-8859-1?q?J=E9r=F4me?= Marant writes: jm> Of course, UNIX sockets don't work on other platforms than UNIX jm> systems. However, you can always make the API behave differently jm> with respect to the system it runs on, for instance returning some jm> special error codes telling that there is no implementation for jm> the function on that on that system. Ja, I agree. That argument hasn't had much traction so far, but perhaps with more public demonstrations may help. :-) jm> Well, it seems that there is such a driver in the jm> examples. However, I'd like to see it either as a contrib or as jm> part of the Erlang release: there is no doubt that it more usefull jm> than you can imagine. Our RPC application saw about a 10% throughput improvement (bulk data transfer) using UNIX domain sockets rather than TCP on the loopback interface ... and no other code changes, other than changes to pattern matching to accomodate the driver. That was under FreeBSD. If I did any of those tests under Linux or Solaris, I don't recall their results. >> If you're really, *really* itching to use it, I can try putting >> the source together into something sortof-useful. Let me know. jm> So yes, please release it ;-) The code is nasty ugly. I started by taking the inet driver and stripping out what wasn't needed by stream-type sockets, which made a bit of a mess. Not understanding all the details in the descriptor-process-less driver design introduced in the R7 inet driver just made things uglier. I'll see what I can do in my spare time this week. Like I said, licensing compels us to release it. It's public as-is already, if you know where to look, but that isn't helpful right now. -Scott From fritchie@REDACTED Wed Sep 19 07:30:18 2001 From: fritchie@REDACTED (Scott Lystig Fritchie) Date: Wed, 19 Sep 2001 00:30:18 -0500 Subject: Using UNIX sockets with Erlang In-Reply-To: Message of "Tue, 18 Sep 2001 17:18:05 CDT." <200109182218.f8IMI5M31178@snookles.snookles.com> Message-ID: <200109190530.f8J5UIM34305@snookles.snookles.com> >>>>> "slf" == Scott Lystig Fritchie writes: slf> I'll see what I can do in my spare time this week. Like I said, slf> licensing compels us to release it. It's public as-is already, slf> if you know where to look, but that isn't helpful right now. See http://www.snookles.com/erlang/ for a cleaned up and better- documented-than-it-used-to-be source distribution for the Sendmail UNIX-domain driver, unixdom-0.1.tar.gz. I'll make a submission to the user contributions moderator, too. -Scott From rikard.elofsson@REDACTED Wed Sep 19 12:12:41 2001 From: rikard.elofsson@REDACTED (Rikard Elofsson) Date: Wed, 19 Sep 2001 12:12:41 +0200 Subject: Using UNIX sockets with Erlang (OT) References: <200109181830.f8IIU6M29774@snookles.snookles.com> Message-ID: <3BA86F99.CCB9C02B@infonation.se> Scott Lystig Fritchie wrote: > > >>>>> "jm" == =?iso-8859-1?q?J=E9r=F4me?= Marant writes: > > jm> I'd like to use UNIX socket with Erlang but I did not find any > jm> module (both within the release and in contribs) supporting this. Hi all, I don't know much about Erlang and i work with Java, but i hope its ok if i ask a question anyway. Is there some kind of possibility to get to the packet level in Erlang, that is, not use sockets? I would like to implement firewall-like behaviour via ipfilter, BPF or something like that. Is there any possibility of getting that close to the machine in Erlang or is one bound to use TCP sockets? And yes i havent been monitoring this thread so if its been duscussed plz let me know. One more: I tried to write a small HTTP server in Erlang, stole code from an example, dont know from where, sorry, and performance is no good, at least on NT. (attached) If i do 50 requests from 20 clients, (1000) about 20 of them fail with "connection refused". Am i doing something wrong or is this expected behaviour? Again, dont hurt me:), i just want to try Erlang out... Regards //Rikard -------------- next part -------------- A non-text attachment was scrubbed... Name: httptest.erl Type: application/x-unknown-content-type-erlangsourcefile Size: 1264 bytes Desc: not available URL: From tobbe@REDACTED Wed Sep 19 13:57:08 2001 From: tobbe@REDACTED (Torbjorn Tornkvist) Date: 19 Sep 2001 13:57:08 +0200 Subject: Using UNIX sockets with Erlang (OT) In-Reply-To: Rikard Elofsson's message of "Wed, 19 Sep 2001 12:12:41 +0200" References: <200109181830.f8IIU6M29774@snookles.snookles.com> <3BA86F99.CCB9C02B@infonation.se> Message-ID: > I would > like to implement firewall-like behaviour via ipfilter, BPF or something > like that. Is there any possibility of getting that close to the machine > in Erlang or is one bound to use TCP sockets? Well, I've written some simple drivers in C, using BPF on FreeBSD and 'raw-packet' sockets on Linux, which delivers Ethernet frames upto Erlang. You'll find them here (among lots of other code): http://www.bluetail.com/~tobbe/etcp/ Cheers /Tobbe From klacke@REDACTED Wed Sep 19 14:01:27 2001 From: klacke@REDACTED (Klacke) Date: Wed, 19 Sep 2001 14:01:27 +0200 Subject: Using UNIX sockets with Erlang (OT) In-Reply-To: <3BA86F99.CCB9C02B@infonation.se>; from rikard.elofsson@infonation.se on Wed, Sep 19, 2001 at 12:12:41PM +0200 References: <200109181830.f8IIU6M29774@snookles.snookles.com> <3BA86F99.CCB9C02B@infonation.se> Message-ID: <20010919140127.B31702@bluetail.com> > (attached) If i do 50 requests from 20 clients, (1000) about 20 of them > fail with "connection refused". Am i doing something wrong or is this > expected behaviour? > Ok, "connection refused" is what you typically get when the listen backlog queue is full on the server machine. You get this because there is time-gap in your code where nobody is accept() 'ing. You need to make sure that there is always some code that sits in accept(). One way is to pre spawn the worker process, do the accept, send the socket to the pre spawned process, and then accept() again. There is also a {backlog, Num} option that can be passed to listen(). Another observation is that the regex and string handling in your code will make it slow. However, that's not your fault, it's erlang strings that suck. Maybe use binaries. /klacke -- Claes Wikstrom -- Caps lock is nowhere and Alteon WebSystems -- everything is under control http://www.bluetail.com/~klacke -- From Sean.Hinde@REDACTED Wed Sep 19 16:27:06 2001 From: Sean.Hinde@REDACTED (Sean Hinde) Date: Wed, 19 Sep 2001 15:27:06 +0100 Subject: Problems compiling with hipe Message-ID: <402DD461F109D411977E0008C791C312039F63E4@IMP02MBX> Hi, When compiling on Solaris 7 with --enable-hipe I get the following message when it tries to link beam: Undefined first referenced symbol in file uint32_to_big /export/home/sean/lib/otp_src_P8A-20010913-S NAPSHOT/erts/obj.beam/sparc-sun-solaris2.7/hipe_bif0.o ld: fatal: Symbol referencing errors. No output written to /export/home/sean/lib /otp_src_P8A-20010913-SNAPSHOT/bin/sparc-sun-solaris2.7/beam collect2: ld returned 1 exit status make[3]: *** [/export/home/sean/lib/otp_src_P8A-20010913-SNAPSHOT/bin/sparc-sun- solaris2.7/beam] Error 1 Before this I got the perhaps related message: gcc -g -O3 -I/export/home/sean/lib/otp_src_P8A-20010913-SNAPSHOT/erts/sparc-sun -solaris2.7 -DHAVE_CONFIG_H -Wall -DHIPE_ARCHITECTURE=ultrasparc -Wa,-xarch=v8p lusa -Ibeam -Isys/unix -Isparc-sun-solaris2.7 -Izlib -Ihipe -c hipe/hipe_bif0.c -o /export/home/sean/lib/otp_src_P8A-20010913-SNAPSHOT/erts/obj.beam/sparc-sun- s olaris2.7/hipe_bif0.o hipe/hipe_bif0.c: In function `Uint32_to_term': hipe/hipe_bif0.c:64: warning: implicit declaration of function `uint32_to_big' Anyone any ideas? From a brief look at the hipe_bif0.c file all looks fine.. big.h is included and this exports the uint32_to_big function.. Stuck, Sean NOTICE AND DISCLAIMER: This email (including attachments) is confidential. If you have received this email in error please notify the sender immediately and delete this email from your system without copying or disseminating it or placing any reliance upon its contents. We cannot accept liability for any breaches of confidence arising through use of email. Any opinions expressed in this email (including attachments) are those of the author and do not necessarily reflect our opinions. We will not accept responsibility for any commitments made by our employees outside the scope of our business. We do not warrant the accuracy or completeness of such information. From kostis@REDACTED Wed Sep 19 16:40:28 2001 From: kostis@REDACTED (Kostis Sagonas) Date: Wed, 19 Sep 2001 16:40:28 +0200 (MET DST) Subject: Problems compiling with hipe In-Reply-To: Mail from 'Sean Hinde ' dated: Wed, 19 Sep 2001 15:27:06 +0100 Message-ID: <200109191440.QAA03829@harpo.it.uu.se> Sean Hinde wrote: > When compiling on Solaris 7 with --enable-hipe I get the following message > when it tries to link beam: > ..... STUFF DELETED Two solutions: 1. Replace "uint32_to_big" by "uint_to_big" in erts/emulator/hipe/hipe_bif0.c 2. Get the latest snapshot from our snapshots directory. www.csd.uu.se/projects/hipe/snapshots Kostis. From Chandrashekhar.Mullaparthi@REDACTED Wed Sep 19 16:46:05 2001 From: Chandrashekhar.Mullaparthi@REDACTED (Chandrashekhar Mullaparthi) Date: Wed, 19 Sep 2001 15:46:05 +0100 Subject: Problems compiling with hipe Message-ID: <402DD461F109D411977E0008C791C31205E06127@IMP02MBX> Sean, The function exported from big.h is uint_to_big - not uint32_to_big. I grepped thru the code and couldn't find a reference to uint32_to_big anywhere and uint_to_big appears only in big.h. Try changing one to the other and recompile. cheers, Chandru > -----Original Message----- > From: Sean Hinde [mailto:Sean.Hinde@REDACTED] > Sent: 19 September 2001 15:27 > To: 'Erlang Questions' > Subject: Problems compiling with hipe > > > Hi, > > When compiling on Solaris 7 with --enable-hipe I get the > following message > when it tries to link beam: > > Undefined first referenced > symbol in file > uint32_to_big > /export/home/sean/lib/otp_src_P8A-20010913-S > NAPSHOT/erts/obj.beam/sparc-sun-solaris2.7/hipe_bif0.o > ld: fatal: Symbol referencing errors. No output written to > /export/home/sean/lib > /otp_src_P8A-20010913-SNAPSHOT/bin/sparc-sun-solaris2.7/beam > collect2: ld returned 1 exit status > make[3]: *** > [/export/home/sean/lib/otp_src_P8A-20010913-SNAPSHOT/bin/sparc-sun- > solaris2.7/beam] Error 1 > > > Before this I got the perhaps related message: > > gcc -g -O3 > -I/export/home/sean/lib/otp_src_P8A-20010913-SNAPSHOT/erts/sparc-sun > -solaris2.7 -DHAVE_CONFIG_H -Wall -DHIPE_ARCHITECTURE=ultrasparc > -Wa,-xarch=v8p > lusa -Ibeam -Isys/unix -Isparc-sun-solaris2.7 -Izlib -Ihipe -c > hipe/hipe_bif0.c > -o > /export/home/sean/lib/otp_src_P8A-20010913-SNAPSHOT/erts/obj.b > eam/sparc-sun- > s > olaris2.7/hipe_bif0.o > hipe/hipe_bif0.c: In function `Uint32_to_term': > hipe/hipe_bif0.c:64: warning: implicit declaration of function > `uint32_to_big' > > Anyone any ideas? From a brief look at the hipe_bif0.c file > all looks fine.. > big.h is included and this exports the uint32_to_big function.. > > Stuck, > > Sean > NOTICE AND DISCLAIMER: This email (including attachments) is confidential. If you have received this email in error please notify the sender immediately and delete this email from your system without copying or disseminating it or placing any reliance upon its contents. We cannot accept liability for any breaches of confidence arising through use of email. Any opinions expressed in this email (including attachments) are those of the author and do not necessarily reflect our opinions. We will not accept responsibility for any commitments made by our employees outside the scope of our business. We do not warrant the accuracy or completeness of such information. From bjorn@REDACTED Wed Sep 19 16:48:39 2001 From: bjorn@REDACTED (Bjorn Gustavsson) Date: 19 Sep 2001 16:48:39 +0200 Subject: Problems compiling with hipe In-Reply-To: Sean Hinde's message of "Wed, 19 Sep 2001 15:27:06 +0100" References: <402DD461F109D411977E0008C791C312039F63E4@IMP02MBX> Message-ID: We have renamed the function uint32_to_big() to uint_to_big(). This will be corrected in our next snapshot. /Bjorn Sean Hinde writes: > Hi, > > When compiling on Solaris 7 with --enable-hipe I get the following message > when it tries to link beam: > > Undefined first referenced > symbol in file > uint32_to_big > /export/home/sean/lib/otp_src_P8A-20010913-S > NAPSHOT/erts/obj.beam/sparc-sun-solaris2.7/hipe_bif0.o > ld: fatal: Symbol referencing errors. No output written to > /export/home/sean/lib > /otp_src_P8A-20010913-SNAPSHOT/bin/sparc-sun-solaris2.7/beam > collect2: ld returned 1 exit status > make[3]: *** > [/export/home/sean/lib/otp_src_P8A-20010913-SNAPSHOT/bin/sparc-sun- > solaris2.7/beam] Error 1 > > > Before this I got the perhaps related message: > > gcc -g -O3 > -I/export/home/sean/lib/otp_src_P8A-20010913-SNAPSHOT/erts/sparc-sun > -solaris2.7 -DHAVE_CONFIG_H -Wall -DHIPE_ARCHITECTURE=ultrasparc > -Wa,-xarch=v8p > lusa -Ibeam -Isys/unix -Isparc-sun-solaris2.7 -Izlib -Ihipe -c > hipe/hipe_bif0.c > -o > /export/home/sean/lib/otp_src_P8A-20010913-SNAPSHOT/erts/obj.beam/sparc-sun- > s > olaris2.7/hipe_bif0.o > hipe/hipe_bif0.c: In function `Uint32_to_term': > hipe/hipe_bif0.c:64: warning: implicit declaration of function > `uint32_to_big' > > Anyone any ideas? From a brief look at the hipe_bif0.c file all looks fine.. > big.h is included and this exports the uint32_to_big function.. > > Stuck, > > Sean > > > > NOTICE AND DISCLAIMER: > This email (including attachments) is confidential. If you have received > this email in error please notify the sender immediately and delete this > email from your system without copying or disseminating it or placing any > reliance upon its contents. We cannot accept liability for any breaches of > confidence arising through use of email. Any opinions expressed in this > email (including attachments) are those of the author and do not necessarily > reflect our opinions. We will not accept responsibility for any commitments > made by our employees outside the scope of our business. We do not warrant > the accuracy or completeness of such information. > -- Bj?rn Gustavsson Ericsson Utvecklings AB bjorn@REDACTED ?T2/UAB/F/P BOX 1505 +46 8 727 56 87 125 25 ?lvsj? From jerome.marant@REDACTED Wed Sep 19 19:31:24 2001 From: jerome.marant@REDACTED (=?iso-8859-1?q?J=E9r=F4me?= Marant) Date: 19 Sep 2001 19:31:24 +0200 Subject: bstring.erl in the next release? In-Reply-To: <402DD461F109D411977E0008C791C312039F63DD@IMP02MBX> References: <402DD461F109D411977E0008C791C312039F63DD@IMP02MBX> Message-ID: <87k7yvqe8j.fsf@marant.org> Sean Hinde writes: > I put together this driver sometime ago (finished off today) which does the > str and chr functions quite efficiently. Warning: I am not a C programmer by > trade. Please therefore treat with extreme caution. Please let me know if > you find any gremlins.. > > I'd also appreciate any comments anyone may have on how this looks or how it > could be improved. It could certainly do with a reverse function and perhaps > rstr, rchr if anyone felt the urge. Thanks. I'll give feedback. > > Of course if Ericsson made them into bifs that would be even better :) Better: implementing strings as binaries rather than lists. Everyone knows that managing strings with lists is the major cause of poor performances of some Erlang programs: one must not underestimate the number of programs processing strings. Cheers, -- J?r?me Marant From jerome.marant@REDACTED Wed Sep 19 19:32:22 2001 From: jerome.marant@REDACTED (=?iso-8859-1?q?J=E9r=F4me?= Marant) Date: 19 Sep 2001 19:32:22 +0200 Subject: Using UNIX sockets with Erlang In-Reply-To: <200109190530.f8J5UIM34305@snookles.snookles.com> References: <200109190530.f8J5UIM34305@snookles.snookles.com> Message-ID: <87g09jqe6x.fsf@marant.org> Scott Lystig Fritchie writes: > >>>>> "slf" == Scott Lystig Fritchie writes: > > slf> I'll see what I can do in my spare time this week. Like I said, > slf> licensing compels us to release it. It's public as-is already, > slf> if you know where to look, but that isn't helpful right now. > > See http://www.snookles.com/erlang/ for a cleaned up and better- > documented-than-it-used-to-be source distribution for the Sendmail > UNIX-domain driver, unixdom-0.1.tar.gz. > > I'll make a submission to the user contributions moderator, too. Yes, please. Thanks a lot. -- J?r?me Marant From kostis@REDACTED Wed Sep 19 18:08:10 2001 From: kostis@REDACTED (Kostis Sagonas) Date: Wed, 19 Sep 2001 18:08:10 +0200 (MET DST) Subject: Erlang improvement? Message-ID: <200109191608.SAA07149@harpo.it.uu.se> Dear Erlang users, The HiPE group, besides developing a faster implementation of Erlang, is also aiming at cleaning up the language from some (occasionally unfortunate) constructs which were once upon a time added to the language (perhaps for a good reason) but are arguably not so useful anymore, ugly, or add unnecessary overhead to some operations. Today, we stumbled upon one of these "remains of the past", and decided that it is probably not worth our while to support this, in our opinion weird, construct in HiPE. We instead think that it is probably a better idea to discontinue its support from future releases of Erlang/OTP. We would like to use this forum to conduct a poll on whether Erlang users really use this "feature" and whether there are applications out there that depend on this. So, if you do have an application that uses this construct, please do speak up at this point. In Erlang, it is currently possible to write the following: %%=============================================================== -module(erlang_is_a_fun_language). -export([test/0,f/2]). test() -> t2(?MODULE,f). t2(M,F) -> {M,F}(bar,42). %% WEIRD SYNTAX FOR "funs" f(_,_) -> ok. %%=============================================================== Instead, we think that the following syntax is a much better way to write the above: %%=============================================================== t2(M,F) -> M:F(bar,42). %%=============================================================== I hope that everybody is in agreement up to this point. Of course, there would not be any problem if it were always possible to syntactically recognize these uses. Then the e.g. BEAM compiler could apply this transformation automatically. Unfortunately, it is currently possible to write the following: t1(PAIR_AS_FUN) -> PAIR_AS_FUN(foo,42). and at runtime call t1/1 as t1({?MODULE,f}). In other words, one can create a "fun" out of a 2-element tuple which of course implies a runtime check everytime a fun_call is encountered. Notice that probably the only reason to use this feature is so as to be able to pass only one argument that is not deconstructed when using it as a fun. Questions: 1. Are there actual uses of this thingie? 2. Will you feel deprived of something if the support for this "feature" is discontinued? 3. Will you object if this happens soon? Your input is appreciated. Best regards, Kostis Sagonas (for the HiPE group). From sam@REDACTED Wed Sep 19 18:26:10 2001 From: sam@REDACTED (Samuel Tardieu) Date: Wed, 19 Sep 2001 18:26:10 +0200 Subject: Erlang improvement? In-Reply-To: <200109191608.SAA07149@harpo.it.uu.se> References: <200109191608.SAA07149@harpo.it.uu.se> Message-ID: <2001-09-19-18-26-10+trackit+sam@inf.enst.fr> On 19/09, Kostis Sagonas wrote: | Instead, we think that the following syntax is a much better way to | write the above: | | %%=============================================================== | | t2(M,F) -> | M:F(bar,42). | | %%=============================================================== Let's assume that f(X) returns 'a' and g(Y) returns 'b'. Does f(X):g(Y) mean a:g(Y) (call g in module a with parameter Y) or the function object a:b? Isn't there an ambiguity here? From kostis@REDACTED Wed Sep 19 19:08:33 2001 From: kostis@REDACTED (Kostis Sagonas) Date: Wed, 19 Sep 2001 19:08:33 +0200 (MET DST) Subject: Erlang improvement? In-Reply-To: Mail from 'Samuel Tardieu ' dated: Wed, 19 Sep 2001 18:26:10 +0200 Message-ID: <200109191708.TAA07643@harpo.it.uu.se> > | %%=============================================================== > | > | t2(M,F) -> > | M:F(bar,42). > | > | %%=============================================================== > > Let's assume that f(X) returns 'a' and g(Y) returns 'b'. > Does f(X):g(Y) mean a:g(Y) (call g in module a with parameter Y) or the > function object a:b? Isn't there an ambiguity here? There is no ambiguity; to perhaps obfuscate things even more, the above notation is just "syntactic sugar" for t2(M,F) -> apply(fun02,f,[bar,42]). Kostis. From sam@REDACTED Wed Sep 19 19:24:28 2001 From: sam@REDACTED (Samuel Tardieu) Date: Wed, 19 Sep 2001 19:24:28 +0200 Subject: Erlang improvement? In-Reply-To: <200109191708.TAA07643@harpo.it.uu.se> References: ' <200109191708.TAA07643@harpo.it.uu.se> Message-ID: <2001-09-19-19-24-28+trackit+sam@inf.enst.fr> On 19/09, Kostis Sagonas wrote: | > | %%=============================================================== | > | | > | t2(M,F) -> | > | M:F(bar,42). | > | | > | %%=============================================================== | > | > Let's assume that f(X) returns 'a' and g(Y) returns 'b'. | > Does f(X):g(Y) mean a:g(Y) (call g in module a with parameter Y) or the | > function object a:b? Isn't there an ambiguity here? | | There is no ambiguity; to perhaps obfuscate things even more, the | above notation is just "syntactic sugar" for | | t2(M,F) -> | apply(fun02,f,[bar,42]). Maybe I am just tired, but I fail to see how your explanation answers my question. How is f(X):g(Y) interpreted? From kostis@REDACTED Wed Sep 19 19:25:13 2001 From: kostis@REDACTED (Kostis Sagonas) Date: Wed, 19 Sep 2001 19:25:13 +0200 (MET DST) Subject: Erlang improvement? In-Reply-To: Mail from 'Kostis Sagonas ' dated: Wed, 19 Sep 2001 19:08:33 +0200 (MET DST) Message-ID: <200109191725.TAA08108@harpo.it.uu.se> I wrote: > There is no ambiguity; to perhaps obfuscate things even more, the > above notation is just "syntactic sugar" for > > t2(M,F) -> > apply(fun02,f,[bar,42]). which indeed is very obfuscated since I meant: t2(M,F) -> apply(M,F,[bar,42]). Kostis. From Sean.Hinde@REDACTED Wed Sep 19 19:50:33 2001 From: Sean.Hinde@REDACTED (Sean Hinde) Date: Wed, 19 Sep 2001 18:50:33 +0100 Subject: bstring.erl in the next release? Message-ID: <402DD461F109D411977E0008C791C312039F63E8@IMP02MBX> > > Thanks. I'll give feedback. > I wait with trepidation :) > Better: implementing strings as binaries rather than lists. > Everyone knows that managing strings with lists is the > major cause of > poor performances of some Erlang programs: one must not > underestimate > the number of programs processing strings This one has been around for years.. Maybe one day Ericsson will see fit to make the default representation of a string something more like a binary. Robert Virding's site has some interesting insight into this problem: http://www.bluetail.com/~rv/Erlang-spec/Proposals/strings.shtml Rgds, Sean NOTICE AND DISCLAIMER: This email (including attachments) is confidential. If you have received this email in error please notify the sender immediately and delete this email from your system without copying or disseminating it or placing any reliance upon its contents. We cannot accept liability for any breaches of confidence arising through use of email. Any opinions expressed in this email (including attachments) are those of the author and do not necessarily reflect our opinions. We will not accept responsibility for any commitments made by our employees outside the scope of our business. We do not warrant the accuracy or completeness of such information. From her@REDACTED Wed Sep 19 20:00:05 2001 From: her@REDACTED (Helmut Enck-Radana) Date: Wed, 19 Sep 2001 20:00:05 +0200 Subject: Erlang improvement? Message-ID: <5.1.0.14.0.20010919195930.00a8fe30@popmail.space.net> At 19:25 19-09-01, Kostis wrote: > > There is no ambiguity; to perhaps obfuscate things even more, the > > above notation is just "syntactic sugar" for >[...] > >t2(M,F) -> > apply(M,F,[bar,42]). I thought the question was whether f(X):g(Y) should mean f(X):(g(Y)) or (f(X):g)(Y). -- Helmut ________________________________ Helmut Enck-Radana Paradigma Software GmbH http://www.paradigma-software.de ________________________________ From rv@REDACTED Wed Sep 19 23:36:43 2001 From: rv@REDACTED (Robert Virding) Date: Wed, 19 Sep 2001 23:36:43 +0200 Subject: Erlang improvement? In-Reply-To: Your message of "Wed, 19 Sep 2001 20:00:05 +0200." <5.1.0.14.0.20010919195930.00a8fe30@popmail.space.net> Message-ID: <200109192136.f8JLaho01220@gustaf.virding.org> Helmut Enck-Radana writes: >At 19:25 19-09-01, Kostis wrote: >> > There is no ambiguity; to perhaps obfuscate things even more, the >> > above notation is just "syntactic sugar" for >>[...] >> >>t2(M,F) -> >> apply(M,F,[bar,42]). > >I thought the question was whether f(X):g(Y) should mean f(X):(g(Y)) or >(f(X):g)(Y). This is indeed what was probably meant. However if you try to write f(X):g(Y) you will find that is not allowed. I did this on purpose. The main reason being that while is is easy for the parser it can often be difficult for a human to work out what is meant. Otherwise you could get beauties like: f(M):g(N):h(O):i(P) This means that you need parenthesis around the module and function parts of a remote call if they themselves are calls. So you would write: (f(X)):g(Y) Also you can't really create a functional object X:Y as the ':' is only valid in a call. It is a bug that the parser allows while erl_lint in the compiler disallows it. It is my laziness which has not fixed the parser to disallow it. Robert From rv@REDACTED Wed Sep 19 23:44:04 2001 From: rv@REDACTED (Robert Virding) Date: Wed, 19 Sep 2001 23:44:04 +0200 Subject: Erlang improvement? In-Reply-To: Your message of "Wed, 19 Sep 2001 18:08:10 +0200." <200109191608.SAA07149@harpo.it.uu.se> Message-ID: <200109192144.f8JLi4G01242@gustaf.virding.org> Kostis Sagonas writes: > ... Stuff about M:F(...) vs {M,F}(...) > >Questions: > > 1. Are there actual uses of this thingie? > > 2. Will you feel deprived of something if the support for this > "feature" is discontinued? > > 3. Will you object if this happens soon? You can actually write the M:F(...) form today (with the caveats in my previous mail) but the {M,F} form is still allowed for backwards compatibility. I don't know if anyone uses it, I never have. It was added back in the dark ages before real fun's as a poor man's functional object, something which was ONE thing which could be created dynamically, passed around and applied to call a function. Also it needed no new data types and a very small modifiaction the emulator. I would personally have nothing against removing it, but it Ericsson Erlang group and major uers who decide. It not anything that I worry about. Robert From her@REDACTED Thu Sep 20 00:49:47 2001 From: her@REDACTED (Helmut Enck-Radana) Date: Thu, 20 Sep 2001 00:49:47 +0200 Subject: Erlang improvement? In-Reply-To: <200109191608.SAA07149@harpo.it.uu.se> Message-ID: <5.1.0.14.0.20010920003257.00a4cce0@popmail.space.net> At 18:08 19-09-01, Kostis Sagonas wrote: >t2(M,F) -> > {M,F}(bar,42). %% WEIRD SYNTAX FOR "funs" > >[...] >Instead, we think that the following syntax is a much better way to >write the above: > >t2(M,F) -> > M:F(bar,42). There was a discussion on this list in the past which I think is related to this subject. See http://www.erlang.org/ml-archive/erlang-questions/200102/msg00119.html, http://www.erlang.org/ml-archive/erlang-questions/200102/msg00124.html and the following discussion. -- Helmut From nico.weling@REDACTED Thu Sep 20 16:15:18 2001 From: nico.weling@REDACTED (Nico Weling) Date: Thu, 20 Sep 2001 16:15:18 +0200 Subject: register Port??? Message-ID: <3BA9F9F6.A2441F5B@eed.ericsson.se> Hi, is it possible to register an port? Eshell V4.9.1 (abort with ^G) (testnode@REDACTED)1> TonePid = open_port({spawn, tone}, [{packet, 2}]). #Port<0.13> (testnode@REDACTED)2> register(tone_port,TonePid). =ERROR REPORT==== 20-Sep-2001::16:23:33 === Error in process <0.35.0> on node 'testnode@REDACTED' with exit value: {badarg,[{erlang,register,[tone_port,<0,13>]},{erl_eval,expr,3},{erl_eval,exprs,4},{shell,eval_loop,2}]} ** exited: {badarg,[{erlang,register,[tone_port,#Port<0.13>]}, {erl_eval,expr,3}, {erl_eval,exprs,4}, {shell,eval_loop,2}]} ** Thanks in advance, Nico. From Sean.Hinde@REDACTED Thu Sep 20 16:24:04 2001 From: Sean.Hinde@REDACTED (Sean Hinde) Date: Thu, 20 Sep 2001 15:24:04 +0100 Subject: register Port??? Message-ID: <402DD461F109D411977E0008C791C312039F63EB@IMP02MBX> Try on R8! Sean > -----Original Message----- > From: Nico Weling [mailto:nico.weling@REDACTED] > Sent: 20 September 2001 15:15 > To: erlang-questions@REDACTED > Subject: register Port??? > > > Hi, > > is it possible to register an port? > > > Eshell V4.9.1 (abort with ^G) > > (testnode@REDACTED)1> TonePid = open_port({spawn, tone}, > [{packet, 2}]). > #Port<0.13> > > (testnode@REDACTED)2> register(tone_port,TonePid). > > =ERROR REPORT==== 20-Sep-2001::16:23:33 === > Error in process <0.35.0> on node 'testnode@REDACTED' with > exit value: > {badarg,[{erlang,register,[tone_port,<0,13>]},{erl_eval,expr,3 > },{erl_eval,exprs,4},{shell,eval_loop,2}]} > ** exited: {badarg,[{erlang,register,[tone_port,#Port<0.13>]}, > {erl_eval,expr,3}, > {erl_eval,exprs,4}, > {shell,eval_loop,2}]} ** > > > Thanks in advance, > > Nico. > NOTICE AND DISCLAIMER: This email (including attachments) is confidential. If you have received this email in error please notify the sender immediately and delete this email from your system without copying or disseminating it or placing any reliance upon its contents. We cannot accept liability for any breaches of confidence arising through use of email. Any opinions expressed in this email (including attachments) are those of the author and do not necessarily reflect our opinions. We will not accept responsibility for any commitments made by our employees outside the scope of our business. We do not warrant the accuracy or completeness of such information. From nico.weling@REDACTED Fri Sep 21 08:06:49 2001 From: nico.weling@REDACTED (Nico Weling) Date: Fri, 21 Sep 2001 08:06:49 +0200 Subject: register Port??? References: <402DD461F109D411977E0008C791C312039F63EB@IMP02MBX> Message-ID: <3BAAD8F9.4A21B8A@eed.ericsson.se> Hi Sean, does this mean that it works in R8 but not in R6? Nico. Sean Hinde wrote: > > Try on R8! > > Sean > > > -----Original Message----- > > From: Nico Weling [mailto:nico.weling@REDACTED] > > Sent: 20 September 2001 15:15 > > To: erlang-questions@REDACTED > > Subject: register Port??? > > > > > > Hi, > > > > is it possible to register an port? > > > > > > Eshell V4.9.1 (abort with ^G) > > > > (testnode@REDACTED)1> TonePid = open_port({spawn, tone}, > > [{packet, 2}]). > > #Port<0.13> > > > > (testnode@REDACTED)2> register(tone_port,TonePid). > > > > =ERROR REPORT==== 20-Sep-2001::16:23:33 === > > Error in process <0.35.0> on node 'testnode@REDACTED' with > > exit value: > > {badarg,[{erlang,register,[tone_port,<0,13>]},{erl_eval,expr,3 > > },{erl_eval,exprs,4},{shell,eval_loop,2}]} > > ** exited: {badarg,[{erlang,register,[tone_port,#Port<0.13>]}, > > {erl_eval,expr,3}, > > {erl_eval,exprs,4}, > > {shell,eval_loop,2}]} ** > > > > > > Thanks in advance, > > > > Nico. > > > > NOTICE AND DISCLAIMER: > This email (including attachments) is confidential. If you have received > this email in error please notify the sender immediately and delete this > email from your system without copying or disseminating it or placing any > reliance upon its contents. We cannot accept liability for any breaches of > confidence arising through use of email. Any opinions expressed in this > email (including attachments) are those of the author and do not necessarily > reflect our opinions. We will not accept responsibility for any commitments > made by our employees outside the scope of our business. We do not warrant > the accuracy or completeness of such information. -- Nico Weling Software Designer Ericsson Eurolab Deutschland GmbH Verification Tool Design Tel: +49 2407 575 5217 Fax: +49 2407 575 651 Dect:+49 2407 575 89339 mailto:Nico.Weling@REDACTED From raimo@REDACTED Fri Sep 21 08:37:46 2001 From: raimo@REDACTED (Raimo Niskanen) Date: Fri, 21 Sep 2001 08:37:46 +0200 Subject: register Port??? References: <402DD461F109D411977E0008C791C312039F63EB@IMP02MBX>, <3BAAD8F9.4A21B8A@eed.ericsson.se> Message-ID: <3BAAE03A.10A79A2@erix.ericsson.se> That is correct. This is a new feature in R8. / Raimo Niskanen, Erlang/OTP, Ericsson UAB. Nico Weling wrote: > > Hi Sean, > > does this mean that it works in R8 but not in R6? > > Nico. > > Sean Hinde wrote: > > > > Try on R8! > > > > Sean > > > > > -----Original Message----- > > > From: Nico Weling [mailto:nico.weling@REDACTED] > > > Sent: 20 September 2001 15:15 > > > To: erlang-questions@REDACTED > > > Subject: register Port??? > > > > > > > > > Hi, > > > > > > is it possible to register an port? > > > > > > > > > Eshell V4.9.1 (abort with ^G) > > > > > > (testnode@REDACTED)1> TonePid = open_port({spawn, tone}, > > > [{packet, 2}]). > > > #Port<0.13> > > > > > > (testnode@REDACTED)2> register(tone_port,TonePid). > > > > > > =ERROR REPORT==== 20-Sep-2001::16:23:33 === > > > Error in process <0.35.0> on node 'testnode@REDACTED' with > > > exit value: > > > {badarg,[{erlang,register,[tone_port,<0,13>]},{erl_eval,expr,3 > > > },{erl_eval,exprs,4},{shell,eval_loop,2}]} > > > ** exited: {badarg,[{erlang,register,[tone_port,#Port<0.13>]}, > > > {erl_eval,expr,3}, > > > {erl_eval,exprs,4}, > > > {shell,eval_loop,2}]} ** > > > > > > > > > Thanks in advance, > > > > > > Nico. > > > > > > > NOTICE AND DISCLAIMER: > > This email (including attachments) is confidential. If you have received > > this email in error please notify the sender immediately and delete this > > email from your system without copying or disseminating it or placing any > > reliance upon its contents. We cannot accept liability for any breaches of > > confidence arising through use of email. Any opinions expressed in this > > email (including attachments) are those of the author and do not necessarily > > reflect our opinions. We will not accept responsibility for any commitments > > made by our employees outside the scope of our business. We do not warrant > > the accuracy or completeness of such information. > > -- > Nico Weling > Software Designer > Ericsson Eurolab Deutschland GmbH > Verification Tool Design > > Tel: +49 2407 575 5217 > Fax: +49 2407 575 651 > Dect:+49 2407 575 89339 > mailto:Nico.Weling@REDACTED From rv@REDACTED Fri Sep 21 08:57:59 2001 From: rv@REDACTED (Robert Virding) Date: Fri, 21 Sep 2001 08:57:59 +0200 Subject: bstring.erl in the next release? In-Reply-To: Your message of "18 Sep 2001 17:46:03 +0200." <8766ag8ptw.fsf@marant.org> Message-ID: <200109210658.f8L6w0k01319@gustaf.virding.org> jmarant@REDACTED (=?iso-8859-1?q?J=E9r=F4me?= Marant) writes: > >Hi, > > I was seeking for a binary implementation of string functions > and someone gracefully pointed me to the mail archive at > > http://www.erlang.org/ml-archive/erlang-questions/200103/msg00134.html > > What about integrating this module in the next Erlang release? (unless > it is already there). While using binaries for strings is sometimes a big win you have to be careful. The problem is that while the representation is more compact and scanning can be quite efficient, either using a driver as Sean Hinde or the bit-syntax directly, building binary strings incremently can become quite costly. Much more costly than using lists. Also binaries are like all other Erlang objects in that they canot be modified, only created. This problem when creating binaries, even with the bit-syntax, is a general problem with binaries not just when using them as strings. I recall there has already been a discussion about this. However, as the string library is mainly about pulling apart strings then a bstring library would probably be in place. A bregexp as well would be nice. Sean, have you tested the efficiency of your drivers against using bit-syntax directly? Robert From Sean.Hinde@REDACTED Fri Sep 21 12:54:58 2001 From: Sean.Hinde@REDACTED (Sean Hinde) Date: Fri, 21 Sep 2001 11:54:58 +0100 Subject: bstring.erl in the next release? Message-ID: <402DD461F109D411977E0008C791C312039F63F3@IMP02MBX> Hi, > jmarant@REDACTED (=?iso-8859-1?q?J=E9r=F4me?= Marant) writes: > > > >Hi, > > > > I was seeking for a binary implementation of string functions > > and someone gracefully pointed me to the mail archive at > > > > > http://www.erlang.org/ml-archive/erlang-> questions/200103/msg00134.html > > > > What about integrating this module in the next Erlang > release? (unless > > it is already there). > > However, as the string library is mainly about pulling apart strings > then a bstring library would probably be in place. A bregexp as well > would be nice. > > Sean, have you tested the efficiency of your drivers against using > bit-syntax directly? Yes, I did some quick tests. Some quick and dirty results (figures given are averages over quite a number of runs): L = lists:seq(1,255). B = list_to_binary(L). 1> timer:tc(string, chr, [L, 255]). {76, 255} 2> timer:tc(bstring, chr, [B, 255]). % Driver {40, 255} 3> timer:tc(bstring, chr2, [B, 255]). % Bitsyntax linear search {260, 255} The current bitsyntax doesn't appear to do that well if parsing byte by byte. We have found it to be much quicker than list crunching for our protocol decode functions though. e.g Splitting 100 octets into 10 groups of 10 octets is much quicker with bitsyntax than parsing every byte through a list. bifs for bstring:chr, str, rchr, rstr, and perhaps reverse would be one way to redress the balance. Some addition to the bitsyntax a la the original would be even better: 1> <<_:Pos/binary, 4, Tail/binary>> = <<1,1,1,1,1,1,1,1,1,4>>. <<1,1,1,1,1,1,1,1,1,4>> 2> Pos. 10 Rgds, Sean NOTICE AND DISCLAIMER: This email (including attachments) is confidential. If you have received this email in error please notify the sender immediately and delete this email from your system without copying or disseminating it or placing any reliance upon its contents. We cannot accept liability for any breaches of confidence arising through use of email. Any opinions expressed in this email (including attachments) are those of the author and do not necessarily reflect our opinions. We will not accept responsibility for any commitments made by our employees outside the scope of our business. We do not warrant the accuracy or completeness of such information. From jerome.marant@REDACTED Fri Sep 21 16:10:21 2001 From: jerome.marant@REDACTED (=?iso-8859-1?q?J=E9r=F4me?= Marant) Date: 21 Sep 2001 16:10:21 +0200 Subject: bstring.erl in the next release? In-Reply-To: <200109210658.f8L6w0k01319@gustaf.virding.org> References: <200109210658.f8L6w0k01319@gustaf.virding.org> Message-ID: <87k7ys63ea.fsf@marant.org> Robert Virding writes: > While using binaries for strings is sometimes a big win you have to be > careful. The problem is that while the representation is more compact > and scanning can be quite efficient, either using a driver as Sean > Hinde or the bit-syntax directly, building binary strings incremently > can become quite costly. Much more costly than using lists. Also > binaries are like all other Erlang objects in that they canot be > modified, only created. > > This problem when creating binaries, even with the bit-syntax, is a > general problem with binaries not just when using them as strings. I > recall there has already been a discussion about this. > > However, as the string library is mainly about pulling apart strings > then a bstring library would probably be in place. A bregexp as well > would be nice. Once again, the most efficient solution would be to handle strings as binaries internaly avoiding the use of extra layers such as a bstring library or driver. Any time to have to communicate with other applications via some Internet protocol, you have to convert strings to binaries and that could be avoided. Hence, I woud see: - strings implemented as binaries within the interpreter - a lstring library in order to manipulate strings as lists Cheers, -- J?r?me Marant From gunilla@REDACTED Fri Sep 21 14:07:25 2001 From: gunilla@REDACTED (Gunilla Hugosson) Date: Fri, 21 Sep 2001 14:07:25 +0200 Subject: Your own behaviours References: <3B94ED73.68AEC00A@erix.ericsson.se> Message-ID: <3BAB2D7D.CFE5D3C7@erix.ericsson.se> Hi, This feature has now been added to Erlang/OTP R8 according to an implementation proposal made by Ulf Wiger. Release note: It is now possible to have the compiler check user-defined behaviours and not only the pre-defined OTP behaviours (gen_server etc.). This is done by adding a function behaviour_info/1 to the behaviour module. behaviour_info(callbacks) should return a list of {FunctionName,Arity} which defines the callback functions the behaviour uses. When a callback module with the attribute -behaviour(Behaviour). is compiled, its exported functions will be compared with the list returned by Behaviour:behaviour_info(callbacks) and a warning will be issued if any callback function is missing. Note that the user must ensure that the module Behaviour is present at compile-time and can be found in the current code path. Best regards, Gunilla Lennart ?hman wrote: > Hi! > > Mandatory callback functions, among other things, are defined > in the module otp_internal. This module is used when compiling > modules having -behavior attribute. > > If you wish to extend your OTP with your own behaviors, otp_internal > must (should) be changed. > > My suggestion is that the functions in the otp_internal are changed to > look for the "answers" in the generic module corresponding > to the behaviour at hand. In this way you do not need to change > modules belonging to the original system. But instead only program > a set of required functions in any new behaviour you invent. > > Best Regards, > > Lennart > > ------------------------------------------------------------- > Lennart Ohman phone : +46-8-587 623 27 > Sjoland & Thyselius Telecom AB cellular: +46-70-552 6735 > Sehlstedtsgatan 6 fax : +46-8-667 8230 > SE-115 28 STOCKHOLM, SWEDEN email : lennart.ohman@REDACTED -- _____Gunilla Hugosson____________________________________________ Project Manager, Erlang/OTP Ericsson Utvecklings AB, UAB/S/P OTP Product Development gunilla@REDACTED +46-8-7275730 From Sean.Hinde@REDACTED Fri Sep 21 14:26:58 2001 From: Sean.Hinde@REDACTED (Sean Hinde) Date: Fri, 21 Sep 2001 13:26:58 +0100 Subject: Your own behaviours Message-ID: <402DD461F109D411977E0008C791C312039F63F4@IMP02MBX> That's excellent news, thank you! Sean > -----Original Message----- > From: Gunilla Hugosson [mailto:gunilla@REDACTED] > Sent: 21 September 2001 13:07 > To: erlang-questions@REDACTED > Subject: Re: Your own behaviours > > > Hi, > > This feature has now been added to Erlang/OTP R8 according to > an implementation proposal made by Ulf Wiger. Release note: > > It is now possible to have the compiler check user-defined > behaviours and not only the pre-defined OTP behaviours > (gen_server etc.). > > This is done by adding a function behaviour_info/1 to > the behaviour module. behaviour_info(callbacks) should return > a list of {FunctionName,Arity} which defines the callback > functions the behaviour uses. > > When a callback module with the attribute > -behaviour(Behaviour). > is compiled, its exported functions will be compared with > the list returned by Behaviour:behaviour_info(callbacks) and > a warning will be issued if any callback function is missing. > > Note that the user must ensure that the module Behaviour is > present at compile-time and can be found in the current code > path. > > Best regards, Gunilla > > > > Lennart ?hman wrote: > > > Hi! > > > > Mandatory callback functions, among other things, are defined > > in the module otp_internal. This module is used when compiling > > modules having -behavior attribute. > > > > If you wish to extend your OTP with your own behaviors, otp_internal > > must (should) be changed. > > > > My suggestion is that the functions in the otp_internal are > changed to > > look for the "answers" in the generic module corresponding > > to the behaviour at hand. In this way you do not need to change > > modules belonging to the original system. But instead only program > > a set of required functions in any new behaviour you invent. > > > > Best Regards, > > > > Lennart > > > > ------------------------------------------------------------- > > Lennart Ohman phone : +46-8-587 623 27 > > Sjoland & Thyselius Telecom AB cellular: +46-70-552 6735 > > Sehlstedtsgatan 6 fax : +46-8-667 8230 > > SE-115 28 STOCKHOLM, SWEDEN email : lennart.ohman@REDACTED > > -- > _____Gunilla Hugosson____________________________________________ > Project Manager, Erlang/OTP > Ericsson Utvecklings AB, UAB/S/P OTP Product Development > gunilla@REDACTED +46-8-7275730 > NOTICE AND DISCLAIMER: This email (including attachments) is confidential. If you have received this email in error please notify the sender immediately and delete this email from your system without copying or disseminating it or placing any reliance upon its contents. We cannot accept liability for any breaches of confidence arising through use of email. Any opinions expressed in this email (including attachments) are those of the author and do not necessarily reflect our opinions. We will not accept responsibility for any commitments made by our employees outside the scope of our business. We do not warrant the accuracy or completeness of such information. From Sean.Hinde@REDACTED Fri Sep 21 15:53:41 2001 From: Sean.Hinde@REDACTED (Sean Hinde) Date: Fri, 21 Sep 2001 14:53:41 +0100 Subject: Building with purify Message-ID: <402DD461F109D411977E0008C791C312039F63F5@IMP02MBX> Hi, I'd like to build the emulator with Rational purify (I'm testing new driver). Does anyone know what the easiest way to setup the makefiles etc to have beam compiled with purify? Thanks, Sean NOTICE AND DISCLAIMER: This email (including attachments) is confidential. If you have received this email in error please notify the sender immediately and delete this email from your system without copying or disseminating it or placing any reliance upon its contents. We cannot accept liability for any breaches of confidence arising through use of email. Any opinions expressed in this email (including attachments) are those of the author and do not necessarily reflect our opinions. We will not accept responsibility for any commitments made by our employees outside the scope of our business. We do not warrant the accuracy or completeness of such information. From sam@REDACTED Fri Sep 21 16:11:22 2001 From: sam@REDACTED (Samuel Tardieu) Date: Fri, 21 Sep 2001 16:11:22 +0200 Subject: Building with purify In-Reply-To: <402DD461F109D411977E0008C791C312039F63F5@IMP02MBX> References: <402DD461F109D411977E0008C791C312039F63F5@IMP02MBX> Message-ID: <2001-09-21-16-11-22+trackit+sam@inf.enst.fr> On 21/09, Sean Hinde wrote: | I'd like to build the emulator with Rational purify (I'm testing new | driver). Does anyone know what the easiest way to setup the makefiles etc to | have beam compiled with purify? I haven't used purify for years, but I think that something like CC="purify gcc" ./configure ... should be enough. From Sean.Hinde@REDACTED Fri Sep 21 16:21:28 2001 From: Sean.Hinde@REDACTED (Sean Hinde) Date: Fri, 21 Sep 2001 15:21:28 +0100 Subject: Building with purify Message-ID: <402DD461F109D411977E0008C791C312039F63F6@IMP02MBX> Thanks.. My experiment with C is grinding slowly on. It is quite the most painfully frustrating thing I have ever done! Rgds, Sean > | I'd like to build the emulator with Rational purify (I'm testing new > | driver). Does anyone know what the easiest way to setup the > makefiles etc to > | have beam compiled with purify? > > I haven't used purify for years, but I think that something like > CC="purify gcc" ./configure ... should be enough. > NOTICE AND DISCLAIMER: This email (including attachments) is confidential. If you have received this email in error please notify the sender immediately and delete this email from your system without copying or disseminating it or placing any reliance upon its contents. We cannot accept liability for any breaches of confidence arising through use of email. Any opinions expressed in this email (including attachments) are those of the author and do not necessarily reflect our opinions. We will not accept responsibility for any commitments made by our employees outside the scope of our business. We do not warrant the accuracy or completeness of such information. From Sean.Hinde@REDACTED Fri Sep 21 17:25:18 2001 From: Sean.Hinde@REDACTED (Sean Hinde) Date: Fri, 21 Sep 2001 16:25:18 +0100 Subject: Building with purify Message-ID: <402DD461F109D411977E0008C791C312039F63F8@IMP02MBX> OK it seems I also need to do -DPURIFY and -DNO_JUMP_TABLE. Any more for any more?? Ta, Sean NOTICE AND DISCLAIMER: This email (including attachments) is confidential. If you have received this email in error please notify the sender immediately and delete this email from your system without copying or disseminating it or placing any reliance upon its contents. We cannot accept liability for any breaches of confidence arising through use of email. Any opinions expressed in this email (including attachments) are those of the author and do not necessarily reflect our opinions. We will not accept responsibility for any commitments made by our employees outside the scope of our business. We do not warrant the accuracy or completeness of such information. From Sean.Hinde@REDACTED Fri Sep 21 17:44:22 2001 From: Sean.Hinde@REDACTED (Sean Hinde) Date: Fri, 21 Sep 2001 16:44:22 +0100 Subject: Building with purify Message-ID: <402DD461F109D411977E0008C791C312039F63F9@IMP02MBX> > OK it seems I also need to do -DPURIFY and -DNO_JUMP_TABLE. > Any more for any more?? I hope I need to do something else otherwise I have a serious problem in the first 2 lines of my driver.. Aargh Sean NOTICE AND DISCLAIMER: This email (including attachments) is confidential. If you have received this email in error please notify the sender immediately and delete this email from your system without copying or disseminating it or placing any reliance upon its contents. We cannot accept liability for any breaches of confidence arising through use of email. Any opinions expressed in this email (including attachments) are those of the author and do not necessarily reflect our opinions. We will not accept responsibility for any commitments made by our employees outside the scope of our business. We do not warrant the accuracy or completeness of such information. From mickael.remond@REDACTED Fri Sep 21 18:42:48 2001 From: mickael.remond@REDACTED (Mickael Remond) Date: Fri, 21 Sep 2001 18:42:48 +0200 Subject: Your own behaviours In-Reply-To: <3BAB2D7D.CFE5D3C7@erix.ericsson.se> References: <3B94ED73.68AEC00A@erix.ericsson.se> <3BAB2D7D.CFE5D3C7@erix.ericsson.se> Message-ID: <20010921184248.A624@erlang-fr.org> Gunilla Hugosson (gunilla@REDACTED) wrote: > Hi, > > This feature has now been added to Erlang/OTP R8 according to > an implementation proposal made by Ulf Wiger. Release note: Good news. R8 is really going to be a major release, full of new features. Thank you. I like that :-) -- Micka?l R?mond http://www.erlang-fr.org/ From willem@REDACTED Sun Sep 23 17:32:22 2001 From: willem@REDACTED (Willem Broekema) Date: Sun, 23 Sep 2001 17:32:22 +0200 Subject: balanced binary tree Message-ID: <3BAE0086.3050103@pastelhorn.com> Is there a known error in the code for balanced binary trees in 'Concurrent programming in Erlang', pp. 62-66? I have carefully copied the code to balbintree.erl, but there's an error in it. Maybe someone else has copied code and can check if these statements work for him? 41> B = balbintree:empty_tree(). {nil,nil,0,nil,nil} 42> B2 = balbintree:insert(key1,val1,B). {key1,val1,1,{nil,nil,0,nil,nil},{nil,nil,0,nil,nil}} 43> B3 = balbintree:insert(key2,val2,B2). {key1,val1, 2, {nil,nil,0,nil,nil}, {key2,val2,1,{nil,nil,0,nil,nil},{nil,nil,0,nil,nil}}} 44> B4 = balbintree:delete(key2,B3). =ERROR REPORT==== 23-Sep-2001::17:01:06 === Error in process <0.86.0> with exit value: {function_clause,[{balbintree,combine ,[nil,nil,nil,nil,key1,val1,{nil,nil,0,nil,nil}]},{erl_eval,expr,3},{... ** exited: {function_clause,[{balbintree, combine, [nil, nil, nil, nil, key1, val1, {nil,nil,0,nil,nil}]}, {erl_eval,expr,3}, {erl_eval,exprs,4}, {shell,eval_loop,2}]} ** - Willem From mickael.remond@REDACTED Sun Sep 23 19:08:01 2001 From: mickael.remond@REDACTED (Mickael Remond) Date: Sun, 23 Sep 2001 19:08:01 +0200 Subject: Debugger broken in P8A ? Message-ID: <20010923190801.A9567@erlang-fr.org> Hello, I have tried the debugger in the P8A prerelease (2001-09-13). It seems that I can no more interpret module from the debugger interface. I get the following error chen trying to interpret a module: Eshell V2001.09.13 (abort with ^G) 1> debugger:start(). <0.30.0> 2> =ERROR REPORT==== 23-Sep-2001::19:04:55 === Error in process <0.41.0> with exit value: {badarg,[{erlang,binary_to_term,[<<0 bytes>>]},{dbg_iload,abstr,1},{dbg_iload,store_module,3},{dbg_iload,load_mod1,3}]} I don't know why for the moment. I have tried with several modules, but I get the same error. Any clue ? -- Micka?l R?mond http://www.erlang-fr.org/ From bjorn@REDACTED Sun Sep 23 19:29:35 2001 From: bjorn@REDACTED (Bjorn Gustavsson) Date: 23 Sep 2001 19:29:35 +0200 Subject: Debugger broken in P8A ? In-Reply-To: Mickael Remond's message of "Sun, 23 Sep 2001 19:08:01 +0200" References: <20010923190801.A9567@erlang-fr.org> Message-ID: The module must be compiled with the compiler flag debug_info, as the debugger now uses the .beam files. Using erlc: erlc +debug_info module.erl >From the Erlang shell: c(module, debug_info). /Bjorn Mickael Remond writes: > Hello, > > I have tried the debugger in the P8A prerelease (2001-09-13). > It seems that I can no more interpret module from the debugger > interface. I get the following error chen trying to interpret a module: > > > Eshell V2001.09.13 (abort with ^G) > 1> debugger:start(). > <0.30.0> > 2> > =ERROR REPORT==== 23-Sep-2001::19:04:55 === > Error in process <0.41.0> with exit value: > {badarg,[{erlang,binary_to_term,[<<0 > bytes>>]},{dbg_iload,abstr,1},{dbg_iload,store_module,3},{dbg_iload,load_mod1,3}]} > > I don't know why for the moment. > I have tried with several modules, but I get the same error. > > Any clue ? > > -- > Micka?l R?mond > http://www.erlang-fr.org/ > -- Bj?rn Gustavsson Ericsson Utvecklings AB bjorn@REDACTED ?T2/UAB/F/P BOX 1505 +46 8 727 56 87 125 25 ?lvsj? From peter@REDACTED Sun Sep 23 20:05:54 2001 From: peter@REDACTED (Peter H|gfeldt) Date: Sun, 23 Sep 2001 20:05:54 +0200 (MET DST) Subject: balanced binary tree In-Reply-To: <3BAE0086.3050103@pastelhorn.com> Message-ID: There are several problems with that code. In particular, the trees that it produce, are not balanced! I once (oh my -- it was almost ten years ago) rewrote the module, then named avl (I attach avl.erl). Note that the code is (very) slow compared to e.g.ets. /Peter ------------------------------------------------------------------------- Peter H?gfeldt e-mail : peter@REDACTED Open Telecom Platform "Computers are machines that do exactly what you tell them, but often surprise you in the result." Richard Dawkins in The Blind Watchmaker On Sun, 23 Sep 2001, Willem Broekema wrote: > Is there a known error in the code for balanced binary trees in > 'Concurrent programming in Erlang', pp. 62-66? > > I have carefully copied the code to balbintree.erl, but there's an error > in it. Maybe someone else has copied code and can check if these > statements work for him? > > 41> B = balbintree:empty_tree(). > {nil,nil,0,nil,nil} > 42> B2 = balbintree:insert(key1,val1,B). > {key1,val1,1,{nil,nil,0,nil,nil},{nil,nil,0,nil,nil}} > 43> B3 = balbintree:insert(key2,val2,B2). > {key1,val1, > 2, > {nil,nil,0,nil,nil}, > {key2,val2,1,{nil,nil,0,nil,nil},{nil,nil,0,nil,nil}}} > 44> B4 = balbintree:delete(key2,B3). > > =ERROR REPORT==== 23-Sep-2001::17:01:06 === > Error in process <0.86.0> with exit value: > {function_clause,[{balbintree,combine > ,[nil,nil,nil,nil,key1,val1,{nil,nil,0,nil,nil}]},{erl_eval,expr,3},{... > ** exited: {function_clause,[{balbintree, > combine, > [nil, > nil, > nil, > nil, > key1, > val1, > {nil,nil,0,nil,nil}]}, > {erl_eval,expr,3}, > {erl_eval,exprs,4}, > {shell,eval_loop,2}]} ** > > - Willem > -------------- next part -------------- %% Copyright (C) 1993, Ellemtel Telecommunications Systems Laboratories %% File : avl.erl %% Version : 1.0 %% Date : 06NOV1991 %% Author : Peter Hogfeldt %% Purpose : Operations on AVL trees (a tree is an AVL tree %% if for each subtree, the heights of its left %% and right branch differ by at most one). %% %% EXPORTS %% %% empty_tree() = void %% %% lookup(Key,Tree) = not_found, {found,Value} %% %% lookup_first(Tree) = not_found, {found,Value,Key} %% %% lookup_next(Key,Tree) = not_found, {found,Value,not_found}, %% {found,Value,NextKey}. Value is the %% value that corresponds to Key. %% %% insert(Key,Value,Tree) = NewTree %% %% delete(Key,Tree) = NewTree -module(avl). -revision('$Revision: 2.1 $'). -created('$CreationDate$'). -created_by('$Creator$'). -modified('$Date: 1995/09/12 16:41:06 $'). -modified_by('$Author: peter $'). -export([empty_tree/0,lookup/2,lookup_first/1,lookup_next/2, insert/3,delete/2]). empty_tree() -> void. lookup(_,void) -> not_found; lookup(K,{_,{K,V},_,_}) -> {found,V}; lookup(K,{L,{Km,_},_,_}) when K lookup(K,L); lookup(K,{_,{Km,_},_,R}) when K>Km -> lookup(K,R). lookup_first(void) -> not_found; lookup_first({void,{K,V},_,_}) -> {found,V,K}; lookup_first({L,_,_,_}) -> lookup_first(L). lookup_next(K,void) -> not_found; lookup_next(K,{_,{K,V},_,R}) -> case lookup_first(R) of {found,_,Ky} -> {found,V,Ky}; Other -> {found,V,Other} end; lookup_next(K,{L,{Km,_},_,_}) when K case lookup_next(K,L) of {F,Vm,not_found} -> {F,Vm,Km}; Other -> Other end; lookup_next(K,{_,{Km,_},_,R}) when K>Km -> lookup_next(K,R). insert(K,V,void) -> {void,{K,V},1,void}; insert(K,V,{L,{K,_},H,R}) -> {L,{K,V},H,R}; insert(K,V,{L,{Km,Vm},_,R}) when K join(insert(K,V,L),{Km,Vm},R); insert(K,V,{L,{Km,Vm},_,R}) when K>Km -> join(L,{Km,Vm},insert(K,V,R)). delete(K,T) -> case catch del(K,T) of not_found -> T; Other -> Other end. %% LOCALS %% %% A tree is a tuple {LeftTree,Item,Height,RightTree} or void. Item %% is of the form {Key,Value} for lookup, insert, delete and del. %% %% del(Key,Tree) = NewTree, not_found %% %% join(LeftTree,Item,RightTree} = Tree %% %% merge(LeftTree,RightTree) = Tree %% %% detach_right(Tree) = {Item,NewTree} %% - detaches the rightmost item from Tree, which must not be void. %% %% detach_left(Tree) = {Item,NewTree} %% - detaches the leftmost item from Tree, which must not be void. %% %% max(x,y) = max(x,y) %% del(_,void) -> throw(not_found); del(K,{L,{K,_},_,R}) -> merge(L,R); del(K,{L,{Km,Vm},_,R}) when K join(del(K,L),{Km,Vm},R); del(K,{L,{Km,Vm},_,R}) when K>Km -> join(L,{Km,Vm},del(K,R)). join(void,I,void) -> {void,I,1,void}; join(void,I,{void,Iy,_,void}) -> {void,I,2,{void,Iy,1,void}}; join(void,I,{Ly,Iy,Hy,Ry}) when Hy>1 -> {Im,Tm}=detach_left({Ly,Iy,Iy,Ry}), join({void,I,1,void},Im,Tm); join({void,Ix,_,void},I,void) -> {{void,Ix,1,void},I,2,void}; join({Lx,Ix,Hx,Rx},I,void) when Hx>1 -> {Im,Tm}=detach_right({Lx,Ix,Hx,Rx}), join(Tm,Im,{void,I,1,void}); join({Lx,Ix,Hx,Rx},I,{Ly,Iy,Hy,Ry}) when Hx= {{Lx,Ix,Hx,Rx},I,max(Hx,Hy)+1,{Ly,Iy,Hy,Ry}}; join({Lx,Ix,Hx,Rx},I,{Ly,Iy,Hy,Ry}) when Hx>Hy+1 -> {Im,Tm}=detach_right({Lx,Ix,Hx,Rx}), join(Tm,Im,join(void,I,{Ly,Iy,Hy,Ry})); join({Lx,Ix,Hx,Rx},I,{Ly,Iy,Hy,Ry}) when Hy>Hx+1 -> {Im,Tm}=detach_left({Ly,Iy,Hy,Ry}), join(join({Lx,Ix,Hx,Rx},I,void),Im,Tm). merge(void,void) -> void; merge(void,R) -> R; merge(L,void) -> L; merge({Lx,Ix,Hx,Rx},{Ly,Iy,Hy,Ry}) when Hx>Hy -> {Im,Tm}=detach_right({Lx,Ix,Hx,Rx}), join(Tm,Im,{Ly,Iy,Hy,Ry}); merge({Lx,Ix,Hx,Rx},{Ly,Iy,Hy,Ry}) when Hx= {Im,Tm}=detach_left({Ly,Iy,Hy,Ry}), join({Lx,Ix,Hx,Rx},Im,Tm). detach_right({L,I,_,void}) -> {I,L}; detach_right({L,I,_,R}) -> {Im,Rm} = detach_right(R), {Im,join(L,I,Rm)}. detach_left({void,I,_,R}) -> {I,R}; detach_left({L,I,_,R}) -> {Im,Lm} = detach_left(L), {Im,join(Lm,I,R)}. max(X,Y) when X =< Y -> Y; max(X,Y) -> X. From mickael.remond@REDACTED Sun Sep 23 20:12:56 2001 From: mickael.remond@REDACTED (Mickael Remond) Date: Sun, 23 Sep 2001 20:12:56 +0200 Subject: Debugger broken in P8A ? In-Reply-To: References: <20010923190801.A9567@erlang-fr.org> Message-ID: <20010923201256.A10648@erlang-fr.org> Bjorn Gustavsson (bjorn@REDACTED) wrote: > The module must be compiled with the compiler flag debug_info, > as the debugger now uses the .beam files. Thank you. I did not notice that. :-) -- Micka?l R?mond http://www.erlang-fr.org/ From fritchie@REDACTED Mon Sep 24 03:31:45 2001 From: fritchie@REDACTED (Scott Lystig Fritchie) Date: Sun, 23 Sep 2001 20:31:45 -0500 Subject: DNS resolving and the trailing "." Message-ID: <200109240131.f8O1VjM82903@snookles.snookles.com> I've been playing around with the DNS resolving functions in R7B-3 and P8A and have seen some "interesting" behavior when making queries with a trailing ".". In my understanding, if a recursive DNS resolver gets a query with a trailing ".", if the query fails, then the resolver won't bother re-attempting the query with local domain names appended to the original query. As an example, my machine at home has got an /etc/resolv.conf file that looks this: nameserver 10.1.1.254 domainname mr.net search yyy.mr.net xxx.mr.net If I try "nslookup blarf.mr.net", up to three separate recursive queries will be attempted in this order: blarf.mr.net, blarf.mr.net.yyy.mr.net, and blarf.mr.net.xxx.mr.net. However, if my original query has a trailing ".", i.e. "nslookup blarf.mr.net.", the search path will not be used, and only one query attempt will be made. Unfortunately, this is not the behavior shown by inet:gethostbyname() et al. 'inet:gethostbyname("blarf.mr.net.").' will make several recursive query attempts: * 3 queries are attempted with illegal queries: the query section of the UDP packet is malformed due to a bug in P8A's inet_dns:dn_comp_label(). I haven't figured out why the bogus query is sent three times, but it is. (R7B-* do the same thing.) * 1 query each for "blarf.mr.net.mr.net", "blarf.mr.net.yyy.mr.net", and "blarf.mr.net.xxx.mr.net" The return value is {error, nxdomain}, which IMO isn't correct. A (lightly tested) fix for the malformed query bug in inet_dns:dn_comp_label() is to add a new clause: dn_comp_label([$\\, 0 | Name], Ns, Cn, Buf, Offset) -> Label = [length(Cn) | reverse([0 | Cn])], { Buf ++ Label, Ns}; dn_comp_label([$. | []], Ns, Cn, Buf, Offset) -> % new clause dn_comp_label([], Ns, Cn, Buf, Offset); % new clause dn_comp_label([$. | Name], Ns, Cn, Buf, Offset) -> Label = [length(Cn) | reverse(Cn)], dn_comp(Name, Ns, Buf ++ Label, Offset+1); [...] Unfortunately, this fix alone does not provide the correct behavior. The caching activities performed by in inet_db don't work correctly when there's a trailing "." because the RRs (resource records) it caches do not have any trailing "." I don't have enough time this evening to provide a patch for inet_db.erl to do things The Right Way(tm). I make my plea to The Release Maintainers to fix this bug. Why not just remove the trailing "." before attempting DNS resolution? My understanding is that the trailing "." semantics are provided by the C library because there are situations where you *know* you don't want resolv.conf's search path to be used. If this bug won't be fixed because The Release Maintainers don't believe it's a bug, then I humbly suggest that this unusual resolver behavior should be clearly documented. :-) -Scott From francesco@REDACTED Tue Sep 25 00:07:05 2001 From: francesco@REDACTED (Francesco Cesarini) Date: Mon, 24 Sep 2001 23:07:05 +0100 Subject: EUC2001: Usage of OTP's design principles in instant messaging services Message-ID: <3BAFAE89.B9931044@erlang-consulting.com> For those of you who will not make it to the Erlang User Conference this year, I put the paper Mickael Remond and I contributed online. It describes a prototype of an instant messaging server written in pure Erlang, and how its migration to a scalable product (up to 10,000 simultaneous users) using OTP took place. We wrote this paper so as to point out the need and advantages of OTP in Erlang product development to companies / individuals without in-house Erlang/OTP expertise, hoping they will not make the same mistakes, and instead take full advantage of OTP from the start. It will hopefully be a starting point for a discussion on how OTP design patterns and principles can be marketed better to people experimenting and developing with Erlang. The URL is http://www.erlang-consulting.com/euc2001/index.htm You will find both the paper and the slides (HTML). If you can not make it on Thursday, feel free to email me any questions. Enjoy.. Francesco -- http://www.erlang-consulting.com -------------- next part -------------- A non-text attachment was scrubbed... Name: francesco.vcf Type: text/x-vcard Size: 352 bytes Desc: Card for Francesco Cesarini URL: From jamesh@REDACTED Tue Sep 25 00:19:26 2001 From: jamesh@REDACTED (James Hague) Date: Mon, 24 Sep 2001 17:19:26 -0500 Subject: R8B PRE-RELEASES Message-ID: I have not downloaded R8 yet--I have a 56K connection at home so it takes a good chunk of time--but I'd like to prod the Erlang team toward making sure that the Windows R8 release doesn't contain as many duplicate files as R7. Looking through the install.log file for R7, three copies of beam.dll were installed (one of which overwrote another copy). There are also duplicates of smaller files, like werl.exe, but those are not as significant. I already see that R8 is a larger release than R7, which is why I decided to write this note. Just a note from a lonely Windows user in the Erlang world :) James From Chandrashekhar.Mullaparthi@REDACTED Tue Sep 25 00:50:06 2001 From: Chandrashekhar.Mullaparthi@REDACTED (Chandrashekhar Mullaparthi) Date: Mon, 24 Sep 2001 23:50:06 +0100 Subject: Your own behaviours Message-ID: <402DD461F109D411977E0008C791C31205E06133@IMP02MBX> I tried looking at the documentation but couldn't find it - is it possible for a module to implement more than one behaviour?? I don't have an example of why I would need to do this but it occured to me that it can be quite powerful for a process to implement different behaviours. A bit like a class implementing a number of interfaces in Java. I haven't programmed much in Java so I dont quite know how useful this ability is - but if someone has experience with this I'd like to hear what they think. cheers, Chandru > -----Original Message----- > From: Gunilla Hugosson [mailto:gunilla@REDACTED] > Sent: 21 September 2001 13:07 > To: erlang-questions@REDACTED > Subject: Re: Your own behaviours > > > Hi, > > This feature has now been added to Erlang/OTP R8 according to > an implementation proposal made by Ulf Wiger. Release note: > > It is now possible to have the compiler check user-defined > behaviours and not only the pre-defined OTP behaviours > (gen_server etc.). > > This is done by adding a function behaviour_info/1 to > the behaviour module. behaviour_info(callbacks) should return > a list of {FunctionName,Arity} which defines the callback > functions the behaviour uses. > > When a callback module with the attribute > -behaviour(Behaviour). > is compiled, its exported functions will be compared with > the list returned by Behaviour:behaviour_info(callbacks) and > a warning will be issued if any callback function is missing. > > Note that the user must ensure that the module Behaviour is > present at compile-time and can be found in the current code > path. > > Best regards, Gunilla > > > > Lennart ?hman wrote: > > > Hi! > > > > Mandatory callback functions, among other things, are defined > > in the module otp_internal. This module is used when compiling > > modules having -behavior attribute. > > > > If you wish to extend your OTP with your own behaviors, otp_internal > > must (should) be changed. > > > > My suggestion is that the functions in the otp_internal are > changed to > > look for the "answers" in the generic module corresponding > > to the behaviour at hand. In this way you do not need to change > > modules belonging to the original system. But instead only program > > a set of required functions in any new behaviour you invent. > > > > Best Regards, > > > > Lennart > > > > ------------------------------------------------------------- > > Lennart Ohman phone : +46-8-587 623 27 > > Sjoland & Thyselius Telecom AB cellular: +46-70-552 6735 > > Sehlstedtsgatan 6 fax : +46-8-667 8230 > > SE-115 28 STOCKHOLM, SWEDEN email : lennart.ohman@REDACTED > > -- > _____Gunilla Hugosson____________________________________________ > Project Manager, Erlang/OTP > Ericsson Utvecklings AB, UAB/S/P OTP Product Development > gunilla@REDACTED +46-8-7275730 > NOTICE AND DISCLAIMER: This email (including attachments) is confidential. If you have received this email in error please notify the sender immediately and delete this email from your system without copying or disseminating it or placing any reliance upon its contents. We cannot accept liability for any breaches of confidence arising through use of email. Any opinions expressed in this email (including attachments) are those of the author and do not necessarily reflect our opinions. We will not accept responsibility for any commitments made by our employees outside the scope of our business. We do not warrant the accuracy or completeness of such information. From hal@REDACTED Tue Sep 25 02:34:03 2001 From: hal@REDACTED (Hal Snyder) Date: 24 Sep 2001 19:34:03 -0500 Subject: EUC2001: Usage of OTP's design principles in instant messaging services In-Reply-To: <3BAFAE89.B9931044@erlang-consulting.com> References: <3BAFAE89.B9931044@erlang-consulting.com> Message-ID: <87n13km7lw.fsf@ghidra.vail> Francesco Cesarini writes: > ... We wrote this paper so as to point out the need and advantages > of OTP in Erlang product development to companies / individuals > without in-house Erlang/OTP expertise, hoping they will not make the > same mistakes, and instead take full advantage of OTP from the > start... > > The URL is http://www.erlang-consulting.com/euc2001/index.htm Couldn't agree more. Our experience parallels that in the report. We started out with Erlang and later, after digging in docs and looking at Eddie and other source from those in the know, found out how much more effective one can be starting with OTP. Probably the best reason yet to upgrade the Red Book. :-) P.S.: I suspect at my site we are in the same condition re mnesia that we were with OTP a year ago - woefully underutilized. From Pedro.Jeria@REDACTED Tue Sep 25 09:26:21 2001 From: Pedro.Jeria@REDACTED (Pedro Jeria (ERV)) Date: Tue, 25 Sep 2001 09:26:21 +0200 Subject: ASN.1 question Message-ID: <5F03ACA2F76DD411B8BC00508BE3B4D704AFA7AE@esemont203.gbg.edt.ericsson.se> Hi, I'm trying to compile one ASN.1 module (with asn1ct BER) but it seems that OTP does not handle the ASN.1 type 'CLASS' correctly. Therefore I have a question: How can I redesign for ex. the following code so it would compile: TimeAndTimezone {PARAMETERS-BOUND : bound}::= OCTET STRING (SIZE( bound.&minTimeAndTimezoneLength .. bound.&maxTimeAndTimezoneLength)) PARAMETERS-BOUND ::= CLASS { &minTimeAndTimezoneLength INTEGER, &maxTimeAndTimezoneLength INTEGER } WITH SYNTAX { MINIMUM-FOR-TIME-AND-TIMEZONE &minTimeAndTimezoneLength MAXIMUM-FOR-TIME-AND-TIMEZONE &maxTimeAndTimezoneLength } capSpecificBoundSet PARAMETERS-BOUND ::= { MINIMUM-FOR-TIME-AND-TIMEZONE 8 MAXIMUM-FOR-TIME-AND-TIMEZONE 8 } Thanks /Pedro From etxuwig@REDACTED Tue Sep 25 09:30:40 2001 From: etxuwig@REDACTED (Ulf Wiger) Date: Tue, 25 Sep 2001 09:30:40 +0200 (MET DST) Subject: Your own behaviours In-Reply-To: <402DD461F109D411977E0008C791C31205E06133@IMP02MBX> Message-ID: On Mon, 24 Sep 2001, Chandrashekhar Mullaparthi wrote: >I tried looking at the documentation but couldn't find it - is >it possible for a module to implement more than one behaviour?? This has been done in a few instances in the past. One example is sasl.erl, which implements both an 'application' behaviour and a 'supervisor' behaviour. In the case of sasl.erl, it's labeled as an 'application' behaviour, so the linter doesn't know to check for 'supervisor' behaviour compliance. If one wants to implement multiple behaviours with the new model for specifying behaviours, it would have to be done in the same way. I recommend against it. I think one module - one behaviour is logical. >I don't have an example of why I would need to do this but it >occured to me that it can be quite powerful for a process to >implement different behaviours. A bit like a class implementing >a number of interfaces in Java. Yes, but in Java, the class concept is central, and it'd be awkward to have to define multiple classes in order to support multiple types of interface. Erlang is structured differently. Without going deeper into why, I don't think the analogy holds. /Uffe -- Ulf Wiger tfn: +46 8 719 81 95 Senior System Architect mob: +46 70 519 81 95 Strategic Product & System Management ATM Multiservice Networks Data Backbone & Optical Services Division Ericsson Telecom AB From Sean.Hinde@REDACTED Tue Sep 25 12:16:43 2001 From: Sean.Hinde@REDACTED (Sean Hinde) Date: Tue, 25 Sep 2001 11:16:43 +0100 Subject: Stand Alone Erlang Message-ID: <402DD461F109D411977E0008C791C312039F6407@IMP02MBX> Will SAE be a fully supported part of R8B? Please! Sean NOTICE AND DISCLAIMER: This email (including attachments) is confidential. If you have received this email in error please notify the sender immediately and delete this email from your system without copying or disseminating it or placing any reliance upon its contents. We cannot accept liability for any breaches of confidence arising through use of email. Any opinions expressed in this email (including attachments) are those of the author and do not necessarily reflect our opinions. We will not accept responsibility for any commitments made by our employees outside the scope of our business. We do not warrant the accuracy or completeness of such information. From kent@REDACTED Tue Sep 25 15:31:58 2001 From: kent@REDACTED (Kent Boortz) Date: 25 Sep 2001 15:31:58 +0200 Subject: R8B PRE-RELEASES In-Reply-To: Kent Boortz's message of "14 Sep 2001 17:46:48 +0200" References: Message-ID: ************************ R8B PRE-RELEASES ************************ There are new prereleases. You find the OpenSource version at http://www.erlang.org/download/prereleases/ and the commercial releases in http://www.erlang.se/lic_area/protected/releases/otp_sunos5_P8A-20010924-SNAPSHOT.tar.gz http://www.erlang.se/lic_area/protected/releases/otp_solaris8_P8A-20010924-SNAPSHOT.tar.gz http://www.erlang.se/lic_area/protected/releases/otp_linux-x86-rh7.1_P8A-20010924-SNAPSHOT.tar.gz The documentation is also updated http://www.erlang.org/doc/p8a/doc/ There is no updated Windows version at this time. These prereleases contains various bug fixes, The OTP Team From icsm2001@REDACTED Tue Sep 25 20:18:56 2001 From: icsm2001@REDACTED (icsm2001 (NESI)) Date: Tue, 25 Sep 2001 20:18:56 +0200 (MET DST) Subject: IEEE Conf.on Software Maintenance, Italy,Florence, ICSM2001 Message-ID: <200109251818.UAA10732@dsiI.dsi.unifi.it> Dear Colleague I would like to invite you to attend the IEEE International Conference on Software Maintenance, 2001, and associated workshops: IEEE SCAM, IEEE WESS, IEEE WSE, TABOO. FLORENCE, ITALY, 6-10 November 2001 http://www.dsi.unifi.it/icsm2001 ICSM is the major international conference in the field of software and systems maintenance, evolution, and management. Theme: Systems and Software Evolution in the era of the Internet kEYWORDS: software evolution, embedded suystems, program analysis, reengineering, managment, maintenance, lyfe cycle, Internet and distributed systems, Multimedia systems, User interface evolution, Commercial off-the-shelf (COTS), Program comprehension, Formal methods, Empirical studies, Testing and regression testing, Measurement of software, METRICS,etc. Please forward the following to anybody you think may be interested. The discount for the advanced registration fee will be active for few days. Apologies for multiple receptions. If you would like to be removed from our list please send an email to icsm2001@REDACTED with REMOVE in the subject. Paolo Nesi (ICSM2001 General Chair) From jouni.ryno@REDACTED Tue Sep 25 22:00:39 2001 From: jouni.ryno@REDACTED (Jouni Ryno) Date: Tue, 25 Sep 2001 23:00:39 +0300 Subject: IC binary (was R8B PRE-RELEASES ) In-Reply-To: Your message of "25 Sep 2001 15:31:58 +0200." Message-ID: In the IC 4.0.7 release notes the erlang binary special type is mentioned. Is it documented somewhere also in the User's Guide ? regards Jouni From nico.weling@REDACTED Wed Sep 26 10:55:06 2001 From: nico.weling@REDACTED (Nico Weling) Date: Wed, 26 Sep 2001 10:55:06 +0200 Subject: Opposite of flatten Message-ID: <3BB197EA.DE1FDA55@eed.ericsson.se> Hi, I need a function which creates tuples and lists from a string, something like the opposite of flatten: 1> Msg = "{ms,{5,{send,filename}}". "{ms,{5,{send,filename}}" 2> Pid ! opposite_of_flatten(Msg). Thanks, Nico. From etxuwig@REDACTED Wed Sep 26 11:24:48 2001 From: etxuwig@REDACTED (Ulf Wiger) Date: Wed, 26 Sep 2001 11:24:48 +0200 (MET DST) Subject: Opposite of flatten In-Reply-To: <3BB197EA.DE1FDA55@eed.ericsson.se> Message-ID: On Wed, 26 Sep 2001, Nico Weling wrote: >I need a function which creates tuples and lists from a string, >something like the opposite of flatten: > >1> Msg = "{ms,{5,{send,filename}}". >"{ms,{5,{send,filename}}" >2> Pid ! opposite_of_flatten(Msg). First of all, Msg above is syntactically incorrect, but I assume that's just a typo. 1> Str = "{ms,{5,{send,filename}}}". "{ms,{5,{send,filename}}}" 2> {ok, Toks, _} = erl_scan:string(Str ++ "."). {ok,[{'{',1}, {atom,1,ms}, {',',1}, {'{',1}, {integer,1,5}, {',',1}, {'{',1}, {atom,1,send}, {',',1}, {atom,1,filename}, {'}',1}, {'}',1}, {'}',1}, {dot,1}], 1} 3> erl_parse:parse_term(Toks). {ok,{ms,{5,{send,filename}}}} Your function, thus, becomes: opposite_of_flatten(Str) -> {ok, Tokens, _} = erl_scan:string(Str ++ "."), {ok, Term} = erl_parse:parse_term(Tokens), Term. Appending the dot is necessary for the parsing to work. /Uffe -- Ulf Wiger tfn: +46 8 719 81 95 Senior System Architect mob: +46 70 519 81 95 Strategic Product & System Management ATM Multiservice Networks Data Backbone & Optical Services Division Ericsson Telecom AB From tobbe@REDACTED Wed Sep 26 11:29:44 2001 From: tobbe@REDACTED (Torbjorn Tornkvist) Date: 26 Sep 2001 11:29:44 +0200 Subject: Opposite of flatten In-Reply-To: Nico Weling's message of "Wed, 26 Sep 2001 10:55:06 +0200" References: <3BB197EA.DE1FDA55@eed.ericsson.se> Message-ID: Does this program do what you want to do ? Cheers /Tobbe ================= str2tokens.erl ================================ -module(str2tokens). -compile(export_all). %% 2> str2tokens:str2terms("{hello,23}. [arne,43]. 5.6. {5.5,1.0}. "). %% [{hello,23},[arne,43],5.60000,{5.50000,1.00000}] str2tokenlists("") -> []; str2tokenlists(String) -> case erl_scan:tokens([], String, 1) of {done, {ok, Tokens, _}, Rest} -> [Tokens | str2tokenlists(Rest)] end. tokenlists2terms(Lists) -> lists:map(fun(L) -> {ok, Term} = erl_parse:parse_term(L), Term end, Lists). str2terms(String) -> tokenlists2terms(str2tokenlists(String)). ================================================================ From Erik.Reitsma@REDACTED Wed Sep 26 11:34:05 2001 From: Erik.Reitsma@REDACTED (Erik Reitsma (ELN)) Date: Wed, 26 Sep 2001 11:34:05 +0200 Subject: Orber and out-parameters in idl Message-ID: Hi all, I was looking in the orber documentation for a description of how I should return values when they have been defined in idl as out-parameters. I have an idl-spec where all methods are void, and return the results in out-parameters. The documentation does mention how such a method could be called with an inout parameter, but there is no example of the server side, where the method is implemented. Does anyone have experience or examples of using out-parameters? If this is supported but not in the documentation, perhaps it should be added... Any tips would be appreciated! I have tried a naive approach, just returning what should be an out-parameter, but then my java client gets an exception... *Erik. From nico.weling@REDACTED Wed Sep 26 11:52:29 2001 From: nico.weling@REDACTED (Nico Weling) Date: Wed, 26 Sep 2001 11:52:29 +0200 Subject: Opposite of flatten References: Message-ID: <3BB1A55D.C090C085@eed.ericsson.se> Hi Ulf, thanks a lot. Very good and simple solution. It's working fine. Regards, Nico. Ulf Wiger wrote: > > On Wed, 26 Sep 2001, Nico Weling wrote: > > >I need a function which creates tuples and lists from a string, > >something like the opposite of flatten: > > > >1> Msg = "{ms,{5,{send,filename}}". > >"{ms,{5,{send,filename}}" > >2> Pid ! opposite_of_flatten(Msg). > > First of all, Msg above is syntactically incorrect, but I assume > that's just a typo. > > 1> Str = "{ms,{5,{send,filename}}}". > "{ms,{5,{send,filename}}}" > 2> {ok, Toks, _} = erl_scan:string(Str ++ "."). > {ok,[{'{',1}, > {atom,1,ms}, > {',',1}, > {'{',1}, > {integer,1,5}, > {',',1}, > {'{',1}, > {atom,1,send}, > {',',1}, > {atom,1,filename}, > {'}',1}, > {'}',1}, > {'}',1}, > {dot,1}], > 1} > 3> erl_parse:parse_term(Toks). > {ok,{ms,{5,{send,filename}}}} > > Your function, thus, becomes: > > opposite_of_flatten(Str) -> > {ok, Tokens, _} = erl_scan:string(Str ++ "."), > {ok, Term} = erl_parse:parse_term(Tokens), > Term. > > Appending the dot is necessary for the parsing to work. > > /Uffe > -- > Ulf Wiger tfn: +46 8 719 81 95 > Senior System Architect mob: +46 70 519 81 95 > Strategic Product & System Management ATM Multiservice Networks > Data Backbone & Optical Services Division Ericsson Telecom AB -- Nico Weling Software Designer Ericsson Eurolab Deutschland GmbH Verification Tool Design Tel: +49 2407 575 5217 Fax: +49 2407 575 651 Dect:+49 2407 575 89339 mailto:Nico.Weling@REDACTED From nick@REDACTED Wed Sep 26 11:55:03 2001 From: nick@REDACTED (Niclas Eklund) Date: Wed, 26 Sep 2001 11:55:03 +0200 (MEST) Subject: Orber and out-parameters in idl In-Reply-To: Message-ID: Hello! If we have the following function (IDL): module M { interface I { void foo(out long MyLong); }; }; To invoke the function on the client-side you write: {ok, MyLong} = 'M_I':foo(ObjectRef), The server should be implemented using: -module('M_I_impl'). foo(State) -> MyLong = ...., {reply, {ok, MyLong}, State}. The above assumes that no extra IC-options have been used (see Module_Interface in the reference manual). The above is also descibed in section 6.7 Invocations of Operations (User's Guide). Just remember that you must return the atom 'ok' for void functions. /Nick > I was looking in the orber documentation for a description of how I > should return values when they have been defined in idl as > out-parameters. I have an idl-spec where all methods are void, and > return the results in out-parameters. The documentation does mention how > such a method could be called with an inout parameter, but there is no > example of the server side, where the method is implemented. > Does anyone have experience or examples of using out-parameters? > If this is supported but not in the documentation, perhaps it should be added... > Any tips would be appreciated! > I have tried a naive approach, just returning what should be an > out-parameter, but then my java client gets an exception... From kent@REDACTED Wed Sep 26 15:17:37 2001 From: kent@REDACTED (Kent Boortz) Date: 26 Sep 2001 15:17:37 +0200 Subject: Stand Alone Erlang In-Reply-To: Sean Hinde's message of "Tue, 25 Sep 2001 11:16:43 +0100" References: <402DD461F109D411977E0008C791C312039F6407@IMP02MBX> Message-ID: Sean Hinde writes: > Will SAE be a fully supported part of R8B? > > Please! This was the plan but unfortunately we have no time to include this in R8B. We will try to provide this in a patch/upgrade. Sorry, kent From kent@REDACTED Wed Sep 26 18:38:25 2001 From: kent@REDACTED (Kent Boortz) Date: 26 Sep 2001 18:38:25 +0200 Subject: IC binary (was R8B PRE-RELEASES ) In-Reply-To: "Jouni Ryno"'s message of "Tue, 25 Sep 2001 23:00:39 +0300" References: Message-ID: "Jouni Ryno" writes: > In the IC 4.0.7 release notes the erlang binary special type is > mentioned. > Is it documented somewhere also in the User's Guide ? The documentation is not written yet but I got this description from Babbis Xagorarakis, the main author of the IC application: Erlang binaries have the same C-definition as if generated sequences of octets, and are providing a way on sending transparent data between C and Erlang. The C-definition (ic.h) for an Erlang binary is : typedef struct { CORBA_unsigned_long _maximum; CORBA_unsigned_long _length; CORBA_octet* _buffer; } erlang_binary; /* ERLANG BINARY */ The differences (between Erlang binary and sequence) are: * on the Erlang side the user is sending/receiving typical Erlang binaries * no encoding/decoding functions are generated * the underlying protocol is more efficient than usual sequences of octets The Erlang binary IDL type is defined in the erlang.idl, while it's C definition is located in the ic.h header file, both in the IC-4.0.7/include directory. You will have to include the file erlang.idl" in order to use the erlang::binary type. kent From proff@REDACTED Wed Sep 26 20:29:22 2001 From: proff@REDACTED (Julian Assange) Date: 27 Sep 2001 04:29:22 +1000 Subject: inets bogosity in R8 beta? Message-ID: $ cat inets.config [{inets, [{services, [{httpd, "/home/proff/c/kosha/erlang/server_root/conf/httpd.conf"}]}]}]. proff@REDACTED:/u/home/proff/c/kosha/erlang/server_root$ erl -config ./inets Eshell V2001.09.13 (abort with ^G) 1> application:start(inets). {error,{shutdown,{inets_sup,start,[normal,[]]}}} =INFO REPORT==== 26-Sep-2001::05:05:06 === application: inets exited: {shutdown,{inets_sup,start,[normal,[]]}} type: temporary 2> httpd:start("/home/proff/c/kosha/erlang/server_root/conf/httpd.conf"). =ERROR REPORT==== 27-Sep-2001::04:17:15 === httpd_conf: server_name must be specified in the config file {stop,"httpd_conf: server_name must be specified in the config file"} % Add server_name 3> httpd:start("/home/proff/c/kosha/erlang/server_root/conf/httpd.conf"). ** exited: {function_clause,[{lists,map,[#Fun,any]}, {httpd_util,make_name,4}, {httpd_manager,start,2}, {erl_eval,expr,3}, {erl_eval,exprs,4}, {shell,eval_loop,2}]} ** application:start(inets). =INFO REPORT==== 27-Sep-2001::04:24:55 === application: inets exited: {shutdown,{inets_sup,start,[normal,[]]}} type: temporary {error,{shutdown,{inets_sup,start,[normal,[]]}}} $ cat conf/httpd.conf # Port: The port the standalone listens to. For ports < 1023, you will # need httpd to be run as root initially. Port 8888 # BindAddress: This directive is used to tell the server which IP address # to listen to. It can either contain "*", an IP address, or a fully # qualified Internet domain name. # BindAddress * # ServerName allows you to set a host name which is sent back to clients for # your server if it's different than the one the program would get (i.e. use # "www" instead of the host's real name). # # Note: You cannot just invent host names and hope they work. The name you # define here must be a valid DNS name for your host. If you don't understand # this, ask your network administrator. #ServerName your.server.net ServerName dopamine.iq.org # SocketType is either ip_comm, sockets or ssl. SocketType ip_comm # Modules: Server run-time plug-in modules written using the Erlang # Web Server API (EWSAPI). The server API make it easy to add functionality # to the server. Read more about EWSAPI in the Reference Manual. # WARNING! Do not tamper with this directive unless you are familiar with # EWSAPI. Modules mod_alias mod_auth mod_esi mod_actions mod_cgi mod_include mod_dir mod_get mod_head mod_log mod_disk_log # ServerAdmin: Your address, where problems with the server should be # e-mailed. ServerAdmin jocke@REDACTED # ServerRoot: The directory the server's config, error, and log files # are kept in ServerRoot /home/proff/c/kosha/erlang/server_root # ErrorLog: The location of the error log file. If this does not start # with /, ServerRoot is prepended to it. ErrorLog logs/error_log # TransferLog: The location of the transfer log file. If this does not # start with /, ServerRoot is prepended to it. TransferLog logs/access_log # SecurityLog: The location of the security log file (mod_security required) # SecurityLog logs/security_log # ErrorDiskLog: The location of the error log file. If this does not # start with /, ServerRoot is prepended to it. This log file is managed # with the disk_log module [See disk_log(3)]. The ErrorDiskLogSize directive # takes two argument, i.e. MaxBytes and MaxFiles. The wrap log writes at most # MaxBytes bytes on each file, and it uses MaxFiles files before it wraps, and # truncates the first file. ErrorDiskLog logs/error_disk_log ErrorDiskLogSize 200000 10 # TransferDiskLog: The location of the transfer log file. If this does not # start with /, ServerRoot is prepended to it. This log file is managed # with the disk_log module [See disk_log(3)]. The TransferDiskLogSize directive # takes two argument, i.e. MaxBytes and MaxFiles. The wrap log writes at most # MaxBytes bytes on each file, and it uses MaxFiles files before it wraps, and # truncates the first file. TransferDiskLog logs/access_disk_log TransferDiskLogSize 200000 10 # SecurityDiskLog: The location of the security log file. If this does not # start with /, ServerRoot is prepended to it. This log file is managed # with the disk_log module [See disk_log(3)]. The SecurityDiskLogSize directive # takes two argument, i.e. MaxBytes and MaxFiles. The wrap log writes at most # MaxBytes bytes on each file, and it uses MaxFiles files before it wraps, and # truncates the first file. SecurityDiskLog logs/security_disk_log SecurityDiskLogSize 200000 10 # Limit on total number of servers running, i.e., limit on the number # of clients who can simultaneously connect --- if this limit is ever # reached, clients will be LOCKED OUT, so it should NOT BE SET TOO LOW. # It is intended mainly as a brake to keep a runaway server from taking # the server with it as it spirals down... MaxClients 50 # KeepAlive sets the maximum number of requests per connection. KeepAlive requests # are used to lower network latency for HTTP. Please note that the implementation # in the INETS webserver is experimental, and does not yet function correctly. #KeepAlive 5 # KeepAliveTimeout sets the number of seconds before an open KeepAlive connection # times out and closes. #KeepAliveTimeout 10 # DocumentRoot: The directory out of which you will serve your # documents. By default, all requests are taken from this directory, but # symbolic links and aliases may be used to point to other locations. DocumentRoot /home/proff/c/kosha/erlang/server_root/htdocs # DirectoryIndex: Name of the file or files to use as a pre-written HTML # directory index. Separate multiple entries with spaces. DirectoryIndex index.html welcome.html # DefaultType is the default MIME type for documents which the server # cannot find the type of from filename extensions. DefaultType text/plain # Aliases: Add here as many aliases as you need (with no limit). The format is # Alias fakename realname Alias /icons/ /home/proff/c/kosha/erlang/server_root/icons/ Alias /pics/ /home/proff/c/kosha/erlang/server_root/icons/ # ScriptAlias: This controls which directories contain server scripts. # Format: ScriptAlias fakename realname ScriptAlias /cgi-bin/ /home/proff/c/kosha/erlang/server_root/cgi-bin/ ScriptAlias /htbin/ /home/proff/c/kosha/erlang/server_root/cgi-bin/ # This directive adds an action, which will activate cgi-script when a # file is requested using the method of method, which can be one of # GET, POST and HEAD. It sends the URL and file path of the requested # document using the standard CGI PATH_INFO and PATH_TRANSLATED # environment variables. #Script HEAD /cgi-bin/printenv.sh # This directive adds an action, which will activate cgi-script when a # file of content type mime-type is requested. It sends the URL and # file path of the requested document using the standard CGI PATH_INFO # and PATH_TRANSLATED environment variables. #Action image/gif /cgi-bin/printenv.sh # ErlScriptAlias: This specifies how "Erl" server scripts are called. # Format: ErlScriptAlias fakename realname allowed_modules ErlScriptAlias /down/erl httpd_example io # EvalScriptAlias: This specifies how "Eval" server scripts are called. # Format: EvalScriptAlias fakename realname allowed_modules EvalScriptAlias /eval httpd_example io # Point SSLCertificateFile at a PEM encoded certificate. #SSLCertificateFile /home/proff/c/kosha/erlang/server_root/ssl/ssl_server.pem # If the key is not combined with the certificate, use this directive to # point at the key file. #SSLCertificateKeyFile /home/proff/c/kosha/erlang/server_root/ssl/ssl_server.pem # Set SSLVerifyClient to: # 0 if no certicate is required # 1 if the client may present a valid certificate # 2 if the client must present a valid certificate # 3 if the client may present a valid certificate but it is not required to # have a valid CA #SSLVerifyClient 0 # Each directory to which INETS has access, can be configured with respect # to which services and features are allowed and/or disabled in that # directory (and its subdirectories). AuthDBType plain AuthName Open Area AuthUserFile /home/proff/c/kosha/erlang/server_root/auth/passwd AuthGroupFile /home/proff/c/kosha/erlang/server_root/auth/group require user one Aladdin # #AuthDBType plain #AuthName Secret Area #AuthUserFile /home/proff/c/kosha/erlang/server_root/auth/passwd #AuthGroupFile /home/proff/c/kosha/erlang/server_root/auth/group #require group group1 group2 # # #AuthDBType plain #AuthName Top Secret Area #AuthUserFile /home/proff/c/kosha/erlang/server_root/auth/passwd #AuthGroupFile /home/proff/c/kosha/erlang/server_root/auth/group #require group group3 # # #AuthDBType mnesia #AuthName Open Area #require user one Aladdin # # #AuthDBType mnesia #AuthName Secret Area #require group group1 group2 # # #AuthDBType mnesia #AuthName Top Secret Area #require group group3 #allow from 130.100.34 130.100.35 #deny from 100.234.22.12 194.100.34.1 130.100.34.25 #SecurityDataFile logs/security_data #SecurityMaxRetries 3 #SecurityBlockTime 10 #SecurityFailExpireTime 1 #SecurityAuthTimeout 1 #SecurityCallbackModule security_callback # From mickael.remond@REDACTED Wed Sep 26 22:33:49 2001 From: mickael.remond@REDACTED (Mickael Remond) Date: Wed, 26 Sep 2001 22:33:49 +0200 Subject: Hipe question Message-ID: <20010926223349.E1967@erlang-fr.org> Hello, I now managed to compile Hipe on Linux (Debian "Sid") thanks to the brand new prerelease. I also manage to compile a module using the hipe:c/1 function. But, from what I understand, I need to use this function (=> hipe recompilation) for each new Erlang session, as no new file is created and the beam file does not seem to be modified. I did not see any way to make the Hipe compilation permanent. I try to use the hipe:compile function to get the code back from the function, but I did not figure out what to do with it (Writing it as a beam or as an executable file does not work). I am probably missing something. Any clue ? -- Micka?l R?mond http://www.erlang-fr.org/ From richardc@REDACTED Wed Sep 26 22:49:18 2001 From: richardc@REDACTED (Richard Carlsson) Date: Wed, 26 Sep 2001 22:49:18 +0200 (MET DST) Subject: Hipe question In-Reply-To: <20010926223349.E1967@erlang-fr.org> Message-ID: The module 'hipe' should be used directly only by diehard experimentalists. For normal use, just write "c(my_module, [native])" in the shell. This will create a .beam file, which also contains the native code as a chunk. Whenever such a file is loaded (in a HiPE-enabled system), the native code will be used if possible (i.e., if it was created on the same kind of system - sparc/solaris or x86/linux) rather than the Beam code (which is also included in the file). Of course, if you use the shell "c(...)" function, the module will be autoloaded. "Just like that!" /Richard On Wed, 26 Sep 2001, Mickael Remond wrote: > I now managed to compile Hipe on Linux (Debian "Sid") thanks to the > brand new prerelease. > > I also manage to compile a module using the hipe:c/1 function. > > But, from what I understand, I need to use this function (=> hipe > recompilation) for each new Erlang session, as no new file is created > and the beam file does not seem to be modified. > > I did not see any way to make the Hipe compilation permanent. > I try to use the hipe:compile function to get the code back from the > function, but I did not figure out what to do with it (Writing it as a > beam or as an executable file does not work). > > I am probably missing something. > Any clue ? > > -- > Micka?l R?mond > http://www.erlang-fr.org/ > Richard Carlsson (richardc@REDACTED) (This space intentionally left blank.) E-mail: Richard.Carlsson@REDACTED WWW: http://www.csd.uu.se/~richardc/ From mikpe@REDACTED Wed Sep 26 22:49:57 2001 From: mikpe@REDACTED (Mikael Pettersson) Date: Wed, 26 Sep 2001 22:49:57 +0200 (MET DST) Subject: Hipe question Message-ID: <200109262049.WAA08406@harpo.it.uu.se> On Wed, 26 Sep 2001 22:33:49 +0200, Mickael Remond wrote: > I now managed to compile Hipe on Linux (Debian "Sid") thanks to the > brand new prerelease. x86, I presume. > > I also manage to compile a module using the hipe:c/1 function. > > But, from what I understand, I need to use this function (=> hipe > recompilation) for each new Erlang session, as no new file is created > and the beam file does not seem to be modified. Adding HiPE native code to the .beam file is currently only supported for SPARC. (And only if you use the ordinary Erlang compiler with the native option, _not_ hipe:c, I think.) We have one person (Erik) working on adding this for the x86 as well, it should be complete later this week or perhaps next week. /Mikael From mickael.remond@REDACTED Wed Sep 26 23:04:00 2001 From: mickael.remond@REDACTED (Mickael Remond) Date: Wed, 26 Sep 2001 23:04:00 +0200 Subject: Hipe question In-Reply-To: <200109262049.WAA08406@harpo.it.uu.se> References: <200109262049.WAA08406@harpo.it.uu.se> Message-ID: <20010926230400.I1967@erlang-fr.org> Mikael Pettersson (mikpe@REDACTED) wrote: > On Wed, 26 Sep 2001 22:33:49 +0200, Mickael Remond wrote: > > > I now managed to compile Hipe on Linux (Debian "Sid") thanks to the > > brand new prerelease. > > x86, I presume. > > > > > I also manage to compile a module using the hipe:c/1 function. > > > > But, from what I understand, I need to use this function (=> hipe > > recompilation) for each new Erlang session, as no new file is created > > and the beam file does not seem to be modified. > > Adding HiPE native code to the .beam file is currently only supported > for SPARC. (And only if you use the ordinary Erlang compiler with the > native option, _not_ hipe:c, I think.) We have one person (Erik) working > on adding this for the x86 as well, it should be complete later this > week or perhaps next week. Ok. I will wait for that. That is nice. The integration of native code to the classic Erlang environnement is very good. You can mix Native and non native module. The performance improvement is great. Nice job, guy. I really will regret not to be able to be at EUC this year. So have a good conference. -- Micka?l R?mond http://www.erlang-fr.org/ From mickael.remond@REDACTED Wed Sep 26 23:01:53 2001 From: mickael.remond@REDACTED (Mickael Remond) Date: Wed, 26 Sep 2001 23:01:53 +0200 Subject: Hipe question In-Reply-To: References: <20010926223349.E1967@erlang-fr.org> Message-ID: <20010926230153.H1967@erlang-fr.org> Richard Carlsson (richardc@REDACTED) wrote: > > The module 'hipe' should be used directly only by diehard > experimentalists. For normal use, just write "c(my_module, [native])" in > the shell. This will create a .beam file, which also contains the native > code as a chunk. Whenever such a file is loaded (in a HiPE-enabled > system), the native code will be used if possible (i.e., if it was > created on the same kind of system - sparc/solaris or x86/linux) rather > than the Beam code (which is also included in the file). Of course, if > you use the shell "c(...)" function, the module will be autoloaded. > > "Just like that!" Thank you. That is what I was missing. I am on x86 so I will wait for the integration of the native code integration into the beam. This is very clever. I like that. -- Micka?l R?mond http://www.erlang-fr.org/ From happi@REDACTED Wed Sep 26 23:16:54 2001 From: happi@REDACTED (Happi) Date: Wed, 26 Sep 2001 23:16:54 +0200 Subject: Hipe question References: <20010926223349.E1967@erlang-fr.org> Message-ID: <001501c146d0$92072c10$c9dafea9@LISA> The hipe:c interface is for interactive mode and for debuging and testing. There is another way to compile to native code: The ordinary compiler supports a flag: native to produce native-code. In the Erlang shell you can do: c(mod, [native]). or c(mod, [native, {hipe,[o3,verbose]). >From the unix shell you can do: erlc +native mod.erl In both cases a .beam file containing native code will be produced. Whenever this module is loaded the native code will be loaded instead of beam code ( as long as the machine you are running on still has the same architecture as the one you compiled on.) Now, there is one slight problem ;) This is only implemented for the SPARC in the current OTP snapshot. However there is a new HiPE/OTP snapshot at http://www.csd.uu.se/projects/hipe/snapshots/ which also supports this on the x86. ----- Original Message ----- From: "Mickael Remond" > > Hello, > > I now managed to compile Hipe on Linux (Debian "Sid") thanks to the > brand new prerelease. > > I also manage to compile a module using the hipe:c/1 function. > > But, from what I understand, I need to use this function (=> hipe > recompilation) for each new Erlang session, as no new file is created > and the beam file does not seem to be modified. > > I did not see any way to make the Hipe compilation permanent. > I try to use the hipe:compile function to get the code back from the > function, but I did not figure out what to do with it (Writing it as a > beam or as an executable file does not work). > > I am probably missing something. > Any clue ? > > -- > Micka?l R?mond > http://www.erlang-fr.org/ > From mickael.remond@REDACTED Thu Sep 27 08:35:07 2001 From: mickael.remond@REDACTED (Mickael Remond) Date: Thu, 27 Sep 2001 08:35:07 +0200 Subject: Stand Alone Erlang In-Reply-To: <402DD461F109D411977E0008C791C312039F6407@IMP02MBX> References: <402DD461F109D411977E0008C791C312039F6407@IMP02MBX> Message-ID: <20010927083507.A4407@erlang-fr.org> Sean Hinde (Sean.Hinde@REDACTED) wrote: > Will SAE be a fully supported part of R8B? > > Please! > > Sean Hello, Did you manage to compile it ? I am currently patching the sae Makefile to compile it correctly, but it seems that a file is missing. I am looking for the file erl_root_dir.erl ... Does someone has it ? Thank you for your help. -- Micka?l R?mond http://www.erlang-fr.org/ From Erik.Reitsma@REDACTED Thu Sep 27 09:50:18 2001 From: Erik.Reitsma@REDACTED (Erik Reitsma (ELN)) Date: Thu, 27 Sep 2001 09:50:18 +0200 Subject: Orber and out-parameters in idl Message-ID: Thanks, it works very nicely now. It would have helped me if this had been explained in the documentation with the small example code below. But the very quick answers on this list are just another reason to choose Erlang! *Erik. > -----Original Message----- > From: Niclas Eklund [mailto:nick@REDACTED] > Sent: Wednesday, September 26, 2001 11:55 > To: Erik Reitsma (ELN) > Cc: erlang-questions@REDACTED > Subject: Re: Orber and out-parameters in idl > > > > Hello! > > If we have the following function (IDL): > > module M { > interface I { > void foo(out long MyLong); > }; > }; > > > To invoke the function on the client-side you write: > > {ok, MyLong} = 'M_I':foo(ObjectRef), > > The server should be implemented using: > > -module('M_I_impl'). > foo(State) -> > MyLong = ...., > {reply, {ok, MyLong}, State}. > > The above assumes that no extra IC-options have been used (see > Module_Interface in the reference manual). > > The above is also descibed in section 6.7 Invocations of Operations > (User's Guide). > > Just remember that you must return the atom 'ok' for void functions. > > /Nick > > > > I was looking in the orber documentation for a description of how I > > should return values when they have been defined in idl as > > out-parameters. I have an idl-spec where all methods are void, and > > return the results in out-parameters. The documentation > does mention how > > such a method could be called with an inout parameter, but > there is no > > example of the server side, where the method is implemented. > > Does anyone have experience or examples of using out-parameters? > > If this is supported but not in the documentation, perhaps > it should be added... > > Any tips would be appreciated! > > I have tried a naive approach, just returning what should be an > > out-parameter, but then my java client gets an exception... > > From vances@REDACTED Thu Sep 27 14:51:22 2001 From: vances@REDACTED (Vance Shipley) Date: Thu, 27 Sep 2001 08:51:22 -0400 Subject: Your own behaviours In-Reply-To: <402DD461F109D411977E0008C791C31205E06133@IMP02MBX> Message-ID: Chandru, This is an issue I have visited before. The first time we packaged an "application" I found it odd that the top module, having behaviour application, did pretty much nothing but start top level supervisor which was implemented in another module. I wondered why the supervisor couldn't also be the application master. Looking at the callbacks which the two behaviours have I saw no conflict. Then I looked at OTP for examples and that is just what I found. Some notable modules which behave as both supervisor and application master are kernel and sasl. Here is the example from kernel.erl: -module(kernel). -behaviour(application). -behaviour(supervisor). I wrote a shell script to find all examples (included below) and here is the list from R7B-3: ./lib/sasl/src/sasl.erl ./lib/kernel/src/kernel.erl ./lib/mnesia/src/mnesia_event.erl ./lib/mnesia/src/mnesia_sup.erl ./lib/mnemosyne/src/mnemosyne_sup.erl ./lib/mnesia_session/src/mnesia_session_top_sup.erl -Vance Vance Shipley Motivity Telecom Inc. +1 519 579 5816 find_multiple_behaviours.sh: #! /bin/sh for i in `find . -name "*.erl"` do if [ `fgrep -c "behaviour(" $i` -gt 1 ] then echo $i fi done From cpressey@REDACTED Thu Sep 27 23:26:34 2001 From: cpressey@REDACTED (Chris Pressey) Date: Thu, 27 Sep 2001 16:26:34 -0500 Subject: R8B PRE-RELEASES In-Reply-To: References: Message-ID: <20010927162634.29f56c5e.cpressey@catseye.mb.ca> On 25 Sep 2001 15:31:58 +0200 Kent Boortz wrote: > ************************ R8B PRE-RELEASES ************************ > > There are new prereleases. You find the OpenSource version at > > http://www.erlang.org/download/prereleases/ Hi, I tried compiling the latest snapshot for FreeBSD 4.4, without much luck. I have guavac for my Java compiler. ./configure seems to detect that. But the makefile does not honour it, it fails because 'javac' is not found. I tried making 'javac' a symlink to 'guavac' but then it complains that 'lang/Object' is not found in the classpath. Can guavac be used? I'd disable the JInterface part of the build but neither the README file nor ./configure --help explains how to do that. Thanks, Chris From kent@REDACTED Fri Sep 28 00:19:53 2001 From: kent@REDACTED (Kent Boortz) Date: 28 Sep 2001 00:19:53 +0200 Subject: R8B PRE-RELEASES In-Reply-To: Chris Pressey's message of "Thu, 27 Sep 2001 16:26:34 -0500" References: <20010927162634.29f56c5e.cpressey@catseye.mb.ca> Message-ID: > I tried compiling the latest snapshot for FreeBSD 4.4, without much luck. Sorry about that. We build and test daily using FreeBSD 4.1.1. > I have guavac for my Java compiler. ./configure seems to detect that. > But the makefile does not honour it, it fails because 'javac' is not > found. I tried making 'javac' a symlink to 'guavac' but then it complains > that 'lang/Object' is not found in the classpath. Can guavac be used? Sun JDK is "free" so it has not been high priority to test the system using other java platforms. > I'd disable the JInterface part of the build but neither the README file > nor ./configure --help explains how to do that. You can do % ./configure % touch lib/jinterface/SKIP % touch lib/ic/java_src/SKIP % touch lib/orber/java_src/SKIP % touch lib/mnesia_session/examples/person/java_session/SKIP % gmake kent From knoop@REDACTED Fri Sep 28 11:43:44 2001 From: knoop@REDACTED (Jens Knoop) Date: Fri, 28 Sep 2001 11:43:44 +0200 (MET DST) Subject: ACM SIGPLAN 2002 PLDI, Berlin, Germany -- Call for Papers Message-ID: <200109280943.LAA25681@stern.cs.uni-dortmund.de> **** Apologies for multiple copies. Please circulate. *** ====================================================================== CALL FOR PAPERS ACM SIGPLAN 2002 Conference on Programming Language Design and Implementation (PLDI) Berlin, Germany, June 17 - 19, 2002 Sponsored by ACM SIGPLAN in cooperation with ACM SIGSOFT http://www.sable.mcgill.ca/~hendren/PLDI2002/ ====================================================================== IMPORTANT DATES --------------- - Submission deadline: Friday, November 16, 2001, 8:00 pm EST (20:00) - Notification: Friday, February 1, 2002 - Camera Ready Deadline: Monday, April 8, 2002 IMPORTANT --------- As for PLDI 2001, full papers are required, not extended abstracts! Introduction ------------ PLDI is a forum where researchers, developers, educators, and practitioners can exchange information on the latest practical and experimental work in the design and implementation of programming languages. The PLDI conference seeks original research papers that focus on practical issues in the design, development, implementation and use of programming languages. Emphasis is placed on novel language designs, innovative and creative approaches to compile-time and run-time technology, and results from experimental studies of actual implementations. Papers are solicited on, but not limited to, these topics: - design and processing of special- - program optimizations and purpose languages, e.g., query, transformations command, and domain-specific - interactions between compilers - implementations of language features and architectures - language support for security - software support tools and safety - storage management techniques - compiler construction - techniques for embedded - program representations and mobile code - program analysis - compilation for distributed, - dynamic compilation and optimization heterogeneous systems techniques - languages and compilers for parallel computing Prospective authors should submit a paper through the PLDI web site by Friday, November 16, 2001 at 8:00 PM EST (20:00). In keeping with the convention established in the last few years, the deadline is firm and no extensions will be given. Papers must be formatted according the ACM proceedings format and should be no longer than 10 pages in this format. Templates for ACM format are available for Word Perfect, Microsoft Word and Latex and are located at http://www.acm.org/sigs/pubs/proceed/template.html. You can also use the ACM "old Latex format" which can be found at http://www.acm.org/sigs/pubs/proceed/PUBFORM.STY. Web-based electronic submission is required. Submissions should be in PDF (preferably) or Postscript that is interpretable by Ghostscript and printable on US Letter and A4 sized paper. Those individuals for which these requirements are a hardship should contact the program chair. Papers that exceed the length requirement or are late will be rejected by the program chair. Papers already being reviewed by another conference are not eligible; if a closely related paper has been submitted to a journal, the authors must notify the program chair. Paper evaluation ---------------- The program committee will evaluate the technical contribution of each submission as well as its general accessibility to the PLDI audience. Papers will be judged on significance, originality, relevance, correctness, and clarity. The paper must be organized so that it is easily understood by an audience with varied expertise. The paper should clearly identify what has been accomplished, why it is significant, and how it compares with previous work. Notification and deadline for final version of accepted papers -------------------------------------------------------------- Authors will be notified of acceptance or rejection by February 1, 2002. Full versions of accepted papers must be formatted to ACM conventions. A camera-ready copy and an electronic version must be received by ACM no later than April 8, 2002. Authors of accepted papers must sign a copyright release form. Proceedings ----------- Proceedings will be distributed at the conference and will appear as an issue of SIGPLAN Notices. Papers published in the proceedings are eligible for publication in refereed ACM publications at the discretion of the editors. Proposals for co-located workshops ---------------------------------- Proposals for co-located workshops to be held before and after the conference are also solicited; proposals for other events such as birds-of-a-feather sessions will be considered, too. Prospective organizers should contact the general chair. Chairs and Program Committee ============================ General Chair Program Chair ------------- ------------- Jens Knoop Laurie J. Hendren Universitaet Dortmund McGill University, Germany Montreal, Canada knoop @ ls5.cs.uni-dortmund.de hendren @ cs.mcgill.ca Tutorial Chair Local Chair -------------- ----------- Kathryn S. McKinley Frank Mueller The University of Texas North Carolina State Univ. at Austin, TX, USA Raleigh, NC, USA mckinley @ cs.utexas.edu mueller @ cs.ncsu.edu Program Committee ----------------- - Thomas Ball - Craig Chambers Microsoft Research, USA University of Washington, USA - Michal Cierniak - Charles Consel Intel Corp., USA ENSEIRB/LaBRI/INRIA, France - David Detlefs - Rajiv Gupta Sun Microsystems, USA University of Arizona, USA - Laurie J. Hendren - Mark D. Hill McGill University, Canada Univ. of Wisconsin-Madison, USA - Jens Knoop - Yanhong Annie Liu Universitaet Dortmund, Germany SUNY Stony Brook, USA - Rita Loogen - Samuel P. Midkiff Universitaet Marburg, Germany IBM T.J. Watson Research Lab, USA - Oege de Moor - Andrew C. Myers Oxford University, UK Cornell University, USA - Norman Ramsey - Martin C. Rinard Harvard University, USA MIT, USA - Barbara G. Ryder - Michael I. Schwartzbach Rutgers University, USA BRICS, University of Aarhus, Denmark - Jan Vitek Purdue University, USA Home page of ACM SIGPLAN PLDI 2002: ----------------------------------- http://sunshine.cs.uni-dortmund.de/~knoop/PLDI2002/pldi2002_main.html From vances@REDACTED Fri Sep 28 20:11:02 2001 From: vances@REDACTED (Vance Shipley) Date: Fri, 28 Sep 2001 14:11:02 -0400 Subject: stickers, logos, etc. Message-ID: I had some "Powered by Erlang" stickers which were given to me a couple years ago. I'm all out now and would really like some more. I'd also like to have that logo in a graphic file so that I could use it on web pages. Does anyone have that logo to share? In general I think that the Erlang logo should be distributed with the source. The penguin goes out with the Linux source. I would include the 'powered by' logo as well. -Vance Vance Shipley Motivity Telecom Inc. +1 519 579 5816 From proff@REDACTED Fri Sep 28 20:56:49 2001 From: proff@REDACTED (Julian Assange) Date: Sat, 29 Sep 2001 04:56:49 +1000 (EST) Subject: inets Message-ID: <20010928185649.BD46D259D1@suburbia.net> Perhaps I should rephrase my earlier post; does *anyone* have inets working in P8A? Cheers, Julian. From martin-g@REDACTED Fri Sep 28 21:34:49 2001 From: martin-g@REDACTED (Martin Gustafsson) Date: Fri, 28 Sep 2001 21:34:49 +0200 Subject: inets References: <20010928185649.BD46D259D1@suburbia.net> Message-ID: <00a601c14854$a9128320$aff4a3c3@martin> Hello Julian I have looked into your problem and it was really a bug in Inets. But if you change the * to an Ip-number in the configuration file the server will work alright. The bug will be fixed as soon as possible. Change this row: BindAddress * to something like this: BindAddress 127.0.0.1 I am sorry that I haven't had time to answer you until now. Best Regards Martin Gustafsson From hokan.stenholm@REDACTED Sat Sep 29 20:18:34 2001 From: hokan.stenholm@REDACTED (=?iso-8859-1?Q?H=E5kan_Stenholm?=) Date: Sat, 29 Sep 2001 20:18:34 +0200 Subject: Powered by Erlang logo Message-ID: <200109291817.UAA17043@d1o60.telia.com> Here's a version I found in the esdl (erlang to sdl mapping), see "User Contributions". -------------- next part -------------- Here's a version I found in the esdl (erlang to sdl mapping), see "User Contributions". -------------- next part -------------- A non-text attachment was scrubbed... Name: Powered.bmp Type: image/bmp Size: 66542 bytes Desc: not available URL: From kent@REDACTED Sun Sep 30 02:52:11 2001 From: kent@REDACTED (Kent Boortz) Date: 30 Sep 2001 02:52:11 +0200 Subject: stickers, logos, etc. In-Reply-To: "Vance Shipley"'s message of "Fri, 28 Sep 2001 14:11:02 -0400" References: Message-ID: "Vance Shipley" writes: > I had some "Powered by Erlang" stickers which were given to me a > couple years ago. I'm all out now and would really like some more. > > I'd also like to have that logo in a graphic file so that I could > use it on web pages. Does anyone have that logo to share? > > In general I think that the Erlang logo should be distributed with > the source. The penguin goes out with the Linux source. I would > include the 'powered by' logo as well. I have put up a page at http://www.erlang.org/promotion/ with the Erlang logo and the "Powered by Erlang" logo in various sizes. You can also find the "originals" that can be used if you create printed materials. I find the Powered by Erlang logo to be hard to read in smaller sizes. Maybe someone out there has the skills to improve the readability of the logo. If not possible we can of cause consider a new "Powered by Erlang" logo? This is not my area of expertise but maybe something more like http://www.erlang.org/promotion/kent_test01.gif kent From vances@REDACTED Sun Sep 30 03:18:02 2001 From: vances@REDACTED (Vance Shipley) Date: Sat, 29 Sep 2001 21:18:02 -0400 Subject: stickers, logos, etc. In-Reply-To: Message-ID: Kent Boortz writes: > > I have put up a page at > > http://www.erlang.org/promotion/ > > with the Erlang logo and the "Powered by Erlang" logo in various > sizes. You can also find the "originals" that can be used if you > create printed materials. This is awesome! Thanks, I think this will help us to promote Erlang/OTP. > I find the Powered by Erlang logo to be hard to read in smaller > sizes. Maybe someone out there has the skills to improve the > readability of the logo. If not possible we can of cause consider a > new "Powered by Erlang" logo? This is not my area of expertise but > maybe something more like > > http://www.erlang.org/promotion/kent_test01.gif Yes, I agree. In fact this is not the "powered by" logo which was on the stickers. I'm not that fond of the one you've put up either. Yours is much better. I came up with this: http://www.motivity.ca/bit/built_on_erlang.gif I won't pretend that I'm a graphics guru as this isn't very good, but my idea was to use "Built on Erlang/OTP". I wanted to include OTP in there. -Vance Vance Shipley Motivity Telecom Inc. +1 519 579 5816 From SimpaticoAmico@REDACTED Sun Sep 30 04:51:41 2001 From: SimpaticoAmico@REDACTED (SimpaticoAmico@REDACTED) Date: Sat, 29 Sep 2001 22:51:41 EDT Subject: seeking hacker for hire... Message-ID: <41.1199b908.28e7e2bd@aol.com> seeking hacker to remove link and page about me from a person's personal homepages...this man put me on his homepages to attract american women for immigration.....and has changed the homepages several times...etc.......He sits and laughs at me behind the computer screen because there is nothing I can do about it.......thanks ........Valerie -------------- next part -------------- An HTML attachment was scrubbed... URL: From david@REDACTED Sun Sep 30 14:26:20 2001 From: david@REDACTED (david wallin) Date: Sun, 30 Sep 2001 14:26:20 +0200 Subject: stickers, logos, etc. In-Reply-To: Message-ID: <5A8C86D0-B59E-11D5-B820-000393536F4E@wallin.cx> On s?ndag, september 30, 2001, at 03:18 , Vance Shipley wrote: > > > Kent Boortz writes: >> >> I have put up a page at >> >> http://www.erlang.org/promotion/ >> >> with the Erlang logo and the "Powered by Erlang" logo in various >> sizes. You can also find the "originals" that can be used if you >> create printed materials. > > This is awesome! Thanks, I think this will help us to promote > Erlang/OTP. > > >> I find the Powered by Erlang logo to be hard to read in smaller >> sizes. Maybe someone out there has the skills to improve the >> readability of the logo. If not possible we can of cause consider a >> new "Powered by Erlang" logo? This is not my area of expertise but >> maybe something more like >> >> http://www.erlang.org/promotion/kent_test01.gif > > Yes, I agree. In fact this is not the "powered by" logo which was on > the stickers. I'm not that fond of the one you've put up either. > Yours is much better. I came up with this: > > http://www.motivity.ca/bit/built_on_erlang.gif > > I won't pretend that I'm a graphics guru as this isn't very good, but > my idea was to use "Built on Erlang/OTP". I wanted to include OTP > in there. > I probably shouldn't change my daytime job, either :-) Anyway, here's my contribution : http://www.wallin.cx/powered_by_erlang/powered_by_erlang_60.gif (Other sizes available http://www.wallin.cx/powered_by_erlang) --david. From matthias@REDACTED Sun Sep 30 15:16:48 2001 From: matthias@REDACTED (Matthias Lang) Date: Sun, 30 Sep 2001 15:16:48 +0200 Subject: gen_fsm state machine drawing tool Message-ID: <15287.6976.313006.866658@antilipe.corelatus.se> Hi, At the Erlang User's Conference (thanks Bjarne, Bj=F6rn, Tuula and Eeva and everyone else for organising a fabulous conference!) I mentioned Vance Shipley's tool for graphing gen_fsm state machines. Someone in the audience wanted to know more about it. I can't find the tool online anywhere, but I saw that Vance is active on the mailing list, so getting a copy should be easy. (LGPL licence) I've attached an example of what I meant when I said the automatically generated diagrams looked like the ITU spec redrawn by a tripping hippie. The ITU's original is on page 5 of Q.703. Matthias -------------- next part -------------- A non-text attachment was scrubbed... Name: lsc.pdf Type: application/pdf Size: 4039 bytes Desc: not available URL: From Chandrashekhar.Mullaparthi@REDACTED Sun Sep 30 21:28:11 2001 From: Chandrashekhar.Mullaparthi@REDACTED (Chandrashekhar Mullaparthi) Date: Sun, 30 Sep 2001 20:28:11 +0100 Subject: Your own behaviours Message-ID: <402DD461F109D411977E0008C791C31205E06146@IMP02MBX> I'll go thru the code for these modules and study them. Thanks! But I suppose you can do more than just start the top level supervisor in the "top" module. You can have code to do different things in different application start phases for example. cheers, Chandru > -----Original Message----- > From: Vance Shipley [mailto:vances@REDACTED] > Sent: 27 September 2001 13:51 > To: Chandrashekhar Mullaparthi > Cc: erlang-questions@REDACTED > Subject: RE: Your own behaviours > > > Chandru, > > This is an issue I have visited before. The first time we packaged > an "application" I found it odd that the top module, having behaviour > application, did pretty much nothing but start top level supervisor > which was implemented in another module. I wondered why the > supervisor > couldn't also be the application master. Looking at the callbacks > which the two behaviours have I saw no conflict. Then I looked at > OTP for examples and that is just what I found. Some notable modules > which behave as both supervisor and application master are kernel > and sasl. > > Here is the example from kernel.erl: > > -module(kernel). > > -behaviour(application). > -behaviour(supervisor). > > > I wrote a shell script to find all examples (included below) and > here is the list from R7B-3: > > ./lib/sasl/src/sasl.erl > ./lib/kernel/src/kernel.erl > ./lib/mnesia/src/mnesia_event.erl > ./lib/mnesia/src/mnesia_sup.erl > ./lib/mnemosyne/src/mnemosyne_sup.erl > ./lib/mnesia_session/src/mnesia_session_top_sup.erl > > > -Vance > > Vance Shipley > Motivity Telecom Inc. > +1 519 579 5816 > > > find_multiple_behaviours.sh: > #! /bin/sh > for i in `find . -name "*.erl"` > do > if [ `fgrep -c "behaviour(" $i` -gt 1 ] > then > echo $i > fi > done > NOTICE AND DISCLAIMER: This email (including attachments) is confidential. If you have received this email in error please notify the sender immediately and delete this email from your system without copying or disseminating it or placing any reliance upon its contents. We cannot accept liability for any breaches of confidence arising through use of email. Any opinions expressed in this email (including attachments) are those of the author and do not necessarily reflect our opinions. We will not accept responsibility for any commitments made by our employees outside the scope of our business. We do not warrant the accuracy or completeness of such information. From cpressey@REDACTED Sun Sep 30 22:29:18 2001 From: cpressey@REDACTED (Chris Pressey) Date: Sun, 30 Sep 2001 15:29:18 -0500 Subject: R8B PRE-RELEASES In-Reply-To: References: <20010927162634.29f56c5e.cpressey@catseye.mb.ca> Message-ID: <20010930152918.33607723.cpressey@catseye.mb.ca> On 28 Sep 2001 00:19:53 +0200 Kent Boortz wrote: > > I'd disable the JInterface part of the build but neither the README > file > > nor ./configure --help explains how to do that. > > You can do > > % ./configure > % touch lib/jinterface/SKIP > % touch lib/ic/java_src/SKIP > % touch lib/orber/java_src/SKIP > % touch lib/mnesia_session/examples/person/java_session/SKIP > % gmake > > kent Thanks! It built fine after that, so I started writing some code to test it, and I think I may have uncovered an error in GS. Upon executing gs:read(Canvas, {hit, {X,Y}}) where X and Y are over an image object, I get: gs error: user backend died reason {{badmatch,[]},[{gstk_db,lookup_item,3},{gstk_canvas,fix_ids,4}, {gstk_generic,read_option,5},{gstk,read_impl,3},{gstk,doit,2}, {gstk,loop,1}]} =ERROR REPORT==== 30-Sep-2001::03:56:58 === Error in process <0.26.0> with exit value: {{badmatch,[]},[{gstk_db,lookup_item,3},{gstk_canvas,fix_ids,4}, {gstk_generic,read_option,5},{gstk,read_impl,3},{gstk,doit,2}, {gstk,loop,1}]} Chris From tPedley@REDACTED Sun Sep 30 22:35:03 2001 From: tPedley@REDACTED (Tony Pedley) Date: Sun, 30 Sep 2001 21:35:03 +0100 Subject: Powered by Erlang logo References: <200109291817.UAA17043@d1o60.telia.com> Message-ID: <003e01c149ef$631ad9c0$8e45883e@c4p8i7> Powered by GIMP -------------- next part -------------- A non-text attachment was scrubbed... Name: erlang.gif Type: image/gif Size: 28463 bytes Desc: not available URL: From martin-g@REDACTED Sun Sep 30 16:19:30 2001 From: martin-g@REDACTED (Martin Gustafsson) Date: Sun, 30 Sep 2001 16:19:30 +0200 Subject: New Inets References: <402DD461F109D411977E0008C791C312039F6421@IMP02MBX> Message-ID: <007801c149ba$ede77c00$39f2a3c3@martin> Hi Friends I believe that Inets was changed to read in one byte at a time to prevent users from sending malformed http-request that could krasch Inets. One can for example send a hostname of 10000 bytes. However Inets are under complete rewriting, to HTTP/1.1 and I will see if I can solve this problem in a better way at the same time. Best regards Martin Gustafsson