ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/cvsroot/docs/pws2004/goofed.mgp
Revision: 1.4
Committed: Wed Jun 30 08:34:11 2004 UTC (22 years, 3 months ago) by root
Branch: MAIN
CVS Tags: HEAD
Changes since 1.3: +1 -1 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 root 1.1 %include "std.mgp"
2     %%default 1 bimage "gtk/gtk-window.jpg" 1024x768, center
3     %page
4 root 1.2 %charset "iso8859-1"
5 root 1.4 %bimage "bg.png" 1280x1024
6 root 1.1
7     %center
8     GOOFED
9    
10    
11 root 1.3
12 root 1.1 %center
13     Generic
14     Object
15     Oriented
16     Flexible
17     Extensible
18     Daemon
19    
20     Perl embedden... einmal anders!
21    
22     %page
23    
24 root 1.3 Welches Problem will ich lösen?
25    
26 root 1.1
27     %pause
28     Ersetzen eines bestehenden Servers
29     %pause
30     Langzeitstabilität
31     %pause
32     Effizienz & Skalierbarkeit
33     %pause
34     Algorithmen sollten einfach und klar ausdrückbar sein
35     %pause
36    
37 root 1.3
38 root 1.1 Vor- u. Nachteile von Perl:
39     %pause
40     Perl besitzt viele nützliche Module
41     %pause
42     Perl hat viele Abhängigkeiten (externe Dateien...)
43     %pause
44     Perl wird nicht häufig embeddet => wenig Beispiele
45     %pause
46     Perl stabil? Ja, aber nicht automatisch...
47    
48     %page
49    
50     Eckpunke der Implementation
51    
52 root 1.3
53 root 1.1 %pause
54     Einzelnes Binary
55     %pause
56     keine externen Dateien
57     %pause
58     auch nicht zur Laufzeit, wie PAR
59 root 1.3
60 root 1.1 %pause
61     Kein komplexes Build-System
62 root 1.3
63 root 1.1 %pause
64     Feste Perl-Version: Upgrade == Kopfschmerzen
65 root 1.3
66 root 1.1 %pause
67     Perl-Sourcen integriert
68 root 1.3
69 root 1.1 %pause
70     Ausgewählte Module
71     %pause
72 root 1.3 Net::LDAP - "buggy as hell"
73     %pause
74     Coro - bekannte Memory-Leaks
75 root 1.1
76     %page
77    
78     Microperl
79    
80 root 1.3
81 root 1.1 %pause
82     µperl, bzw. uperl ist Teil der Perl-Distribution
83 root 1.3
84 root 1.1 %pause
85     README.micro, Makefile.micro, uconfig.sh
86     %pause
87     sehr spartanisch: C89 + ein bisschen POSIX
88    
89 root 1.3
90    
91 root 1.1 %pause
92     Tuning
93 root 1.3 %pause
94 root 1.1 %font "t5"
95     <= -DPERL_CORE -DPERL_MICRO -DSTANDARD_C
96     -DPERL_USE_SAFE_PUTENV
97     => -DPERL_CORE=1 -DPERL_MICRO=1
98    
99     %pause
100     vi uconfig.sh
101    
102     %page
103    
104     Ergebnis
105    
106    
107 root 1.3
108    
109 root 1.1 %pause
110     libuperl.a
111    
112 root 1.3
113 root 1.1 %pause
114     microperl
115    
116 root 1.3
117 root 1.1 %pause
118     Config.pm
119    
120     %page
121    
122     Bibliotheksdateien
123    
124    
125 root 1.3 %pause
126     %font "t5"
127     UPERL = uperl/microperl -Ilib-perl
128    
129     src/libfiles.c: s/gen_libfiles extensions
130     $(UPERL) s/gen_libfiles >$@
131 root 1.1 %font "s"
132    
133 root 1.3
134 root 1.1 %pause
135     gen_libfiles erzeugt src/libfiles.c:
136    
137 root 1.3 %pause
138 root 1.1 %font "t3"
139 root 1.3 const char *embed_files[] = {
140     /* 0 */
141     "\025Attribute/Handlers.pm\000\000\030Apackage Attribute::Handlers;\01...
142     " "data eq 'ARRAY';\012\011\011\011\\$data = [ \\$data ] unless \\$wa...
143     ...
144     ,
145     };
146 root 1.1
147 root 1.3 const int embed_file_num = 208;
148 root 1.1
149     %page
150    
151     Module mit XS-Dateien
152    
153 root 1.3
154 root 1.1 %pause
155     ExtUtils::MakeMaker bietet Support für in-Tree-Builds
156 root 1.3
157 root 1.1 %pause
158     %font "t5"
159     $TOP/uperl/microperl -I$TOP/lib-perl
160     Makefile.PL INSTALLDIRS=perl
161     PERL_CORE=1 PERL_SRC=$TOP/uperl
162     PERL_LIB=$TOP/lib-perl
163     %font "s"
164    
165     %pause
166     Statische Module
167 root 1.3
168 root 1.1 %pause
169     %font "t5"
170 root 1.3 make CC=$(CC) OPTIMIZE=$(OPTIMIZE)
171     LINKTYPE=static CCCDLFLAGS= static
172 root 1.1
173     %page
174    
175     Linken
176    
177 root 1.3
178 root 1.1 %pause
179     %font "t4"
180 root 1.3 goofed: src/main.o src/xsinit.o src/libfiles.o ...
181 root 1.1 $(CC) $(CFLAGS) -o $@ src/xsinit.o
182     `find lib-perl/auto -name '*.a' -print`
183     src/main.o src/libfiles.o uperl/libuperl.a
184     $(LIBS)
185     %font "s"
186    
187 root 1.3
188 root 1.1 %pause
189     xsinit.c enthält boot_Modulname Aufrufe, die die bootstrap-Funktionen registrieren:
190    
191     %pause
192     %font "t4"
193     newXS ("daemon::bootstrap", boot_daemon, file);
194     newXS ("re::bootstrap", boot_re, file);
195     newXS ("POSIX::bootstrap", boot_POSIX, file);
196     \# usw..
197    
198    
199     %page
200    
201     "Bootstrapping"
202    
203 root 1.3
204    
205 root 1.1 %pause
206     %font "t4"
207     char *embed_argv[EMBED_ARGC] = {
208     "goofed", "-e", ....
209     };
210    
211     %pause
212     daemon->bootstrap (0);
213     PerlIO::scalar->bootstrap (0);
214 root 1.3
215 root 1.1 %pause
216     @INC = sub {
217     open my $fh, '<', \(daemon::libfile ($_[1]))
218     or die "FATAL: loader can't in-memory stream\n";
219     $fh;
220     };
221 root 1.3
222 root 1.1 %pause
223     require daemon;
224     daemon->init;
225    
226 root 1.3 %page
227    
228     Daemon-Design
229    
230     %pause
231     => Siehe Tagungsband
232 root 1.1