Skip to Content.
Sympa Menu

devel - [sympa-developpers] RFC sympatic

Subject: Developers of Sympa

List archive

Chronological Thread  
  • From: Marc Chantreux <address@concealed>
  • To: address@concealed
  • Subject: [sympa-developpers] RFC sympatic
  • Date: Fri, 9 Mar 2018 15:34:07 +0100

Those are the decisions to do about sympatic

A. Add Path::Tiny to Sympatic
B. Moo imported by default in sympatic
C. minimal version of perl
D. autodie

decisions A and B will be adopted if there is no more comment.

A. Add Path::Tiny to Sympatic

This was a proposal made by eiro on the list but wasn't really debated.

* eiro thinks we can replace a lot of homebrew code just using
methods of Path::Tiny
* racke thinks we should not provide default unicode policy while using
file and we should use Path::Tiny methods instead
* no one provided negative comments on this proposal.

i think this should be added as dependency of Sympatic and path() should
be exported by default.

B. Moo imported by default in sympatic

racke proposed to import the moo stuff by default and it makes sense as
most of the files we have to write are Moo classes. the proposal i made
(uncommented for the moment) is

After Before

use Sympatic -oo; use Sympatic;
use Sympatic; use Sympatic -noo;

will be applied unless extra comments.

D. Unicode policy

this is still an open topic but some things seems to be clear:

* there is no good reason to load charnames by default and the memory
should be used for more interesting things
* the default policy of the open pragma which implies use
PerlIO::utf8_strict is too intrusive.

so utf8:all will not be used and we should define our own policy. things
we have to decide (the way i understand,) are:

* should @ARGV be encoded by default ? which layer to use ?
* should open use an encoding by default ? which layer to use ?
* should stdios use an encoding by default ? which layer to use ?
* should the Sympa code be written in utf8 ?
* should the features fc and unicode_strings be loaded ?

my answer is: as long as utf8 became the expected format for almost
everything nowadays, we should expect it as default and using the
recommendations of the perl pumpkin on it
(which are described there with a very interesting overview of how
perl actually handle strings: https://www.youtube.com/watch?v=TmTeXcEixEg).

so the code and the files should be utf-8 by default:

use utf8;
use open qw< encoding(utf-8) :std >;

also @ARGV should be encoded and we should use fc and unicode_strings.

the last opinion i undestand from Soji is:

* we should use charnames import
* we should use :bytes as default open layer

and i think racke worried about the filehandles but frankly: i really
think everyone uses utf8 by default nowadays and the other situations
should be wrap into functions. for example: opening a pipe to sendmail
by default shouldn't be required from the sympa code as the PEP (perl
email project) provide modules to do that.

D. autodie

the idea was to have a defensive default behavior. it seems a bad idea
for everyone.

* no one wants to use a lexical 'no autodie'
* everyone is pretty sure we will always test every function call that
can rise $ERRNO
* the $ERRNO seems to have a very tight scope so for example: if you
try to open a file in an eval block, you loose $ERRNO while leaving
the eval block. the consequence is $ERRNO can't be used in a
try/catch.

try { open $fh,'>','/O B V I O U S - FAIL' }
catch {
say $ERRNO; # $ERRNO is empty there :(
}





Archive powered by MHonArc 2.6.19+.

Top of Page