199 lines
7.0 KiB
Plaintext
199 lines
7.0 KiB
Plaintext
=encoding utf8
|
|
|
|
=head1 BASE PORT
|
|
|
|
=head2 Console
|
|
|
|
- The Console only does "ASCII" input: e.g. pressing the "2"
|
|
key five times, "aaaaa", does not produce "ä" ("a diaeresis"),
|
|
but instead the "2" key rotates through "abc2abc2...".
|
|
This is a pity because the Console is actually capable of full
|
|
Unicode input and output (if you have the fonts, that is). You
|
|
can verify this by entering e.g. the euro character, which is
|
|
U+20AC, well beyond U+00FF. I don't know why the full repertoire
|
|
of the keyboard is not available.
|
|
- Enhance the console? (line editing, full x-y movement, history)
|
|
- The role of the console needs to be rethought: the best way
|
|
would be to have the console visible in the same screen as
|
|
the GUI elements (an "embedded console"?)
|
|
|
|
=head2 Core Language
|
|
|
|
- the $^E does not work
|
|
- select() does not work (not our fault)
|
|
- starting external application: what now (0.1.0) works is:
|
|
- system("app");
|
|
- system("app&");
|
|
- and those with arguments:
|
|
- system("app arg1 arg2")
|
|
- system("app arg1 arg2 &")
|
|
but remember that a Symbian process does get only argv[0]
|
|
and argv[1]: all the arguments of the application are passed
|
|
in as a single argument, the second one ("arg1 arg2" in the above)
|
|
What does not work:
|
|
- I/O redirection
|
|
- piped open, in either direction
|
|
- qx/backtick/`
|
|
- fork/wait (these unlikely to ever work as in POSIX)
|
|
- IO redirection or filename globbing in system()
|
|
(since there is no POSIX shell beneath)
|
|
What might work in future:
|
|
- some I/O redirection
|
|
- exec() might be made to work
|
|
- Symbian::spawn("cmd args") returning a process id (what does Win32 do?)
|
|
- Symbian::waitpid($spawned_pid)
|
|
|
|
=head2 Platform
|
|
|
|
- in S60 1.2 (at least in 3650 Nokia 3650 v3.11) setjmp/longjmp is
|
|
fragile (see Symbian FAQ-0929), intensive debugging and fix needed
|
|
|
|
=head2 Unicode
|
|
|
|
- Symbian has Unicode filenames, and Unicode all over the place.
|
|
- Encode and the use of Symbian Unicode in general
|
|
tie into the overall usefulness of PerlIO.
|
|
|
|
=head2 Portability
|
|
|
|
- Slash versus Backslash: where does one need to use "\\"?
|
|
writing Perl applications, where can one get away with using "/" ?
|
|
|
|
=head2 Build
|
|
|
|
- make xsbuild.pl much more robust (for building external extensions)
|
|
(see symbian\ext\README and symbian\ext\Moped\Msg\README)
|
|
- now the .mmp functions both as input and as output - bad
|
|
- MakeMaker? Pure PM, PM + XS?
|
|
- currently the PerlApp UID is in both config.pl (hardwired) and
|
|
in makesis.pl (computed), this is quite error prone
|
|
- Enable building also under Cygwin? (could be really hard,
|
|
the Symbian SDKs pretty much assume cmd.exe)
|
|
|
|
=head1 PACKAGING
|
|
|
|
- subdivide perlext.sis?
|
|
- pm-stripper: strip pod and comments, while inserting the appropriate
|
|
#line commands to keep linenumbers in sync. Shaves off easily 50%
|
|
of the code, making install packages smaller.
|
|
- Get MakeMaker to create SIS packages? In non-Win32?
|
|
- Symbian has APIs for opening .zip files
|
|
- Investigate Autrijus Tang's PAR format
|
|
http://www.autrijus.org/par-intro/
|
|
|
|
=head1 PerlBase
|
|
|
|
- review for proper Symbian coding practices
|
|
|
|
=head1 PerlApp
|
|
|
|
- In "Run" see how one could show also the file extensions.
|
|
- How to allow passing command line options to scripts being run?
|
|
- Terminate/Pause menu entries (to be used while the script is running)?
|
|
- review for proper Symbian coding practices
|
|
|
|
=head2 All UIs
|
|
|
|
- Make it possible to call UI elements (or any other Symbianic
|
|
asynchronous services) from Perl.
|
|
|
|
There is now a sample of enabling calling CPerlUi::TextQueryDialogL()
|
|
from Perl as PerlApp::TextQuery(), see symbian_utils.c. This, however,
|
|
does not work: calling the dialog code blocks so that the screen is not
|
|
redrawn at all. Perl should do both: "yield" so that the GUI framework
|
|
can redraw, but in the meanwhile Perl should wait for the completion
|
|
(OK or Cancel) of the dialog, but Perl must not exit the current PL_op.
|
|
Welcome to the wonderful world of cooperative multitasking. The right
|
|
solution surely involves Active Objects. The problem may require having
|
|
a different Perl op dispatch loop than the standard and debug ones in
|
|
run.c and dump.c.
|
|
|
|
- menu/toolbar support
|
|
- selection lists (single cf multi cf radio)
|
|
- on/off (special case of two-item radio selection list)
|
|
- forms (multicontrols)
|
|
- "secret editor" (special case of text query)
|
|
|
|
=head2 Series 60
|
|
|
|
- in S60 2.6 (at least in Nokia 6630 v4.03.11) launching scripts via
|
|
FExplorer does not open up the console
|
|
|
|
=head2 Series 80
|
|
|
|
- On exit "PerlApp" gets Symbian USER Panic 44: "This panic is raised
|
|
by the Free() and FreeZ() member functions of an RHeap. It is caused
|
|
when the cell being freed overlaps the next cell on the free list
|
|
(i.e. the first cell on the free list with an address higher than the
|
|
one being freed)." Reason unknown.
|
|
- Hotkey Newline so that it functions as 'OK' in dialogs
|
|
|
|
=head2 UIQ
|
|
|
|
- UIQ 3.0? UIQ 2.0? (now only tried in UIQ 2.1)
|
|
- UIQ, at least UIQ 2.1, does not have "file select dialogs" since
|
|
"files" are supposed to be hidden from the user. Therefore, no
|
|
"Run" in PerlApp. (For similar stylistic reasons there is no "Exit".)
|
|
- Long notes (e.g. the EPerlAppCommandAbout) are shown badly truncated.
|
|
|
|
=head1 CPAN LIBRARIES
|
|
|
|
- Include/Package more modules (or work harder on getting CPAN.pm working?)
|
|
(but note that lib/**/*.pm is 3.5 megabytes, probably not worth including
|
|
all of it, even after pm-stripping):
|
|
- libnet
|
|
- Bundle::CPAN
|
|
- Archive::Tar (now included in 5.9.x)
|
|
- Term::ReadKey (useless?)
|
|
- Term::ReadLine (useless?)
|
|
- Bundle::LWP
|
|
- URI
|
|
- HTML::TagSet
|
|
- HTML::Parser
|
|
- HTML::Entities
|
|
- HTML::HeadParser
|
|
- LWP
|
|
- Crypt::SSLeay? (ssl?)
|
|
- IMAP?
|
|
- Net::Telnet?
|
|
- Archive::Zip?
|
|
- Mail::Send?
|
|
- Date::Calc?
|
|
- XML? XML::Simple? (expat?) (there is builtin xml support)
|
|
- RSS?
|
|
- DBI (DBD::???)
|
|
- DBD::SQLite? (sqlite?)
|
|
- SOAP? XML-RPC?
|
|
|
|
=head1 CORE LIBRARIES
|
|
|
|
- Fix Devel::PPPort (worth it?) (Note that there is D::PPP 3.x out by now)
|
|
- Fix Encode to not to have writeable data: seems to be tricky indeed
|
|
because of copious global non-const data.
|
|
- Verify that the modified File::Spec::Win32 does work in Symbian.
|
|
(File::Spec::Epoc does not seem to be relevant?)
|
|
- What does Cwd really do since the concept of cwd is a bit fuzzy in Symbian.
|
|
- What should Sys::Hostname return? GPRS? BT? WLAN?
|
|
- ByteLoader problem: byterun.c does not see VERSION and XS_VERSION.
|
|
- POSIX problem: STDLIB POSIX is not that POSIX.
|
|
|
|
=head1 REGRESSION SUITE
|
|
|
|
- how to run the standard test suite on a Symbian device?
|
|
|
|
=head1 FUTURE POSSIBILITIES
|
|
|
|
- GUI support (problematic that the MVC model enforces an "application")
|
|
(name suggestion: Moped::Gui)
|
|
(see above for the need of sorting out the Active Objectedness)
|
|
- Messaging support (sms:, mms:, mailto:, irdaobex:, btobex:,
|
|
cell location, WLAN)
|
|
(name suggestion: Moped::Msg)
|
|
- PDA support (address book)
|
|
(name suggestion: Moped::PDA)
|
|
- Device support (memory, camera)
|
|
(name suggestion: Moped::Dev::Memory, Moped::Dev::Drives, Moped::Dev::Camera)
|
|
- Phone APIs (e.g. how to catch an incoming call: BIO messaging)
|
|
- Remote console (Bluetooth/IR/USB?)
|
|
|