Author: Armin Rigo
Branch:
Changeset: r156:f5bc966d0d96
Date: 2014-12-05 10:01 +0100
http://bitbucket.org/cffi/creflect/changeset/f5bc966d0d96/
Log:global vars, starting
diff --git a/zeffir/builder.c b/zeffir/builder.c
--- a/zeffir/builder.c
+++ b/zeffir/builder.c
@@ -413,7 +413,17 @@
stat
Author: Remi Meier
Branch: c8-private-pages
Changeset: r1514:970af41866c7
Date: 2014-12-05 10:05 +0100
http://bitbucket.org/pypy/stmgc/changeset/970af41866c7/
Log:merge (hopefully) fixed _stm_validate()
diff --git a/c8/stm/core.c b/c8/stm/core.c
--- a/c8/stm/core.c
+++ b/c8/stm/core.c
@@ -27
Author: Armin Rigo
Branch:
Changeset: r157:46722c958fdb
Date: 2014-12-05 10:40 +0100
http://bitbucket.org/cffi/creflect/changeset/46722c958fdb/
Log:starting to port some more cdata logic
diff --git a/zeffir/builder.c b/zeffir/builder.c
--- a/zeffir/builder.c
+++ b/zeffir/builder.c
@@ -269,7
Author: mattip
Branch: ufuncapi
Changeset: r74828:1453b5101ed2
Date: 2014-12-05 11:56 +0200
http://bitbucket.org/pypy/pypy/changeset/1453b5101ed2/
Log:fix after merge, wip
diff --git a/pypy/module/micronumpy/nditer.py b/pypy/module/micronumpy/nditer.py
--- a/pypy/module/micronumpy/nditer.py
Author: mattip
Branch: ufuncapi
Changeset: r74825:d5aace1c3418
Date: 2014-12-05 01:54 +0200
http://bitbucket.org/pypy/pypy/changeset/d5aace1c3418/
Log:refactor, properly allocate via signature dtypes. Still no casting
diff --git a/pypy/module/micronumpy/ufuncs.py b/pypy/module/micronumpy/ufu
Author: mattip
Branch: ufuncapi
Changeset: r74830:d5e8a34c0382
Date: 2014-12-05 13:18 +0200
http://bitbucket.org/pypy/pypy/changeset/d5e8a34c0382/
Log:reshape for broadcasting
diff --git a/pypy/module/micronumpy/ufuncs.py b/pypy/module/micronumpy/ufuncs.py
--- a/pypy/module/micronumpy/ufuncs
Author: mattip
Branch: ufuncapi
Changeset: r74827:8f7cc875fd26
Date: 2014-12-05 08:50 +0200
http://bitbucket.org/pypy/pypy/changeset/8f7cc875fd26/
Log:merge default into branch
diff too long, truncating to 2000 out of 8352 lines
diff --git a/lib-python/2.7/subprocess.py b/lib-python/2.7/sub
Author: mattip
Branch: ufuncapi
Changeset: r74829:9d7d30ef07d4
Date: 2014-12-05 12:53 +0200
http://bitbucket.org/pypy/pypy/changeset/9d7d30ef07d4/
Log:translation fix
diff --git a/pypy/module/micronumpy/ufuncs.py b/pypy/module/micronumpy/ufuncs.py
--- a/pypy/module/micronumpy/ufuncs.py
+++ b
Author: mattip
Branch: ufuncapi
Changeset: r74826:384b1e427559
Date: 2014-12-05 08:28 +0200
http://bitbucket.org/pypy/pypy/changeset/384b1e427559/
Log:simplify, test for not-implemented need to cast args
diff --git a/pypy/module/micronumpy/ufuncs.py b/pypy/module/micronumpy/ufuncs.py
--- a/p
Author: Armin Rigo
Branch:
Changeset: r158:64bc5e56d01a
Date: 2014-12-05 12:24 +0100
http://bitbucket.org/cffi/creflect/changeset/64bc5e56d01a/
Log:copy loads of code from _cffi_backend.c
diff --git a/zeffir/builder.c b/zeffir/builder.c
--- a/zeffir/builder.c
+++ b/zeffir/builder.c
@@ -288,
Author: mattip
Branch: ufuncapi
Changeset: r74831:35709774642a
Date: 2014-12-05 13:38 +0200
http://bitbucket.org/pypy/pypy/changeset/35709774642a/
Log:fix failing test
diff --git a/pypy/module/micronumpy/ufuncs.py b/pypy/module/micronumpy/ufuncs.py
--- a/pypy/module/micronumpy/ufuncs.py
+++
Author: Armin Rigo
Branch:
Changeset: r159:c6e3bdeb49c5
Date: 2014-12-05 12:35 +0100
http://bitbucket.org/cffi/creflect/changeset/c6e3bdeb49c5/
Log:re-enable the XXX'ed parts of ffi.new()
diff --git a/zeffir/builder.c b/zeffir/builder.c
--- a/zeffir/builder.c
+++ b/zeffir/builder.c
@@ -349,
Author: Armin Rigo
Branch:
Changeset: r160:adbaf54b8357
Date: 2014-12-05 12:43 +0100
http://bitbucket.org/cffi/creflect/changeset/adbaf54b8357/
Log:the next tests to pass
diff --git a/zeffir/cfunc.c b/zeffir/cfunc.c
--- a/zeffir/cfunc.c
+++ b/zeffir/cfunc.c
@@ -48,7 +48,8 @@
actualnarg
Author: Armin Rigo
Branch:
Changeset: r161:081d71b47603
Date: 2014-12-05 15:43 +0100
http://bitbucket.org/cffi/creflect/changeset/081d71b47603/
Log:correct call argument types
diff --git a/zeffir/cfunc.c b/zeffir/cfunc.c
--- a/zeffir/cfunc.c
+++ b/zeffir/cfunc.c
@@ -5,12 +5,19 @@
int
Author: Armin Rigo
Branch:
Changeset: r162:157449ed6904
Date: 2014-12-05 15:48 +0100
http://bitbucket.org/cffi/creflect/changeset/157449ed6904/
Log:more copying from _cffi_backend
diff --git a/zeffir/cfunc.c b/zeffir/cfunc.c
--- a/zeffir/cfunc.c
+++ b/zeffir/cfunc.c
@@ -46,6 +46,67 @@
#d
Author: Armin Rigo
Branch:
Changeset: r164:fca0f1dca466
Date: 2014-12-05 16:22 +0100
http://bitbucket.org/cffi/creflect/changeset/fca0f1dca466/
Log:simple structs work
diff --git a/zeffir/builder.c b/zeffir/builder.c
--- a/zeffir/builder.c
+++ b/zeffir/builder.c
@@ -388,14 +388,42 @@
r
Author: Armin Rigo
Branch:
Changeset: r163:1c10444e58e6
Date: 2014-12-05 15:54 +0100
http://bitbucket.org/cffi/creflect/changeset/1c10444e58e6/
Log:globals of all types
diff --git a/zeffir/cglob.c b/zeffir/cglob.c
--- a/zeffir/cglob.c
+++ b/zeffir/cglob.c
@@ -51,3 +51,13 @@
assert(addr
Author: Armin Rigo
Branch:
Changeset: r166:030aea977e7e
Date: 2014-12-05 16:52 +0100
http://bitbucket.org/cffi/creflect/changeset/030aea977e7e/
Log:ffi.string
diff --git a/zeffir/ffi_obj.c b/zeffir/ffi_obj.c
--- a/zeffir/ffi_obj.c
+++ b/zeffir/ffi_obj.c
@@ -255,12 +255,75 @@
return (Py
Author: Armin Rigo
Branch:
Changeset: r167:6aee42c289d3
Date: 2014-12-05 16:56 +0100
http://bitbucket.org/cffi/creflect/changeset/6aee42c289d3/
Log:equality on cdata's
diff --git a/zeffir/cdata.c b/zeffir/cdata.c
--- a/zeffir/cdata.c
+++ b/zeffir/cdata.c
@@ -1050,6 +1050,52 @@
}
}
+
Author: Armin Rigo
Branch:
Changeset: r165:64bdd79c09b5
Date: 2014-12-05 16:47 +0100
http://bitbucket.org/cffi/creflect/changeset/64bdd79c09b5/
Log:ffi.NULL
diff --git a/zeffir/builder.c b/zeffir/builder.c
--- a/zeffir/builder.c
+++ b/zeffir/builder.c
@@ -6,7 +6,6 @@
_crx_builder_t cb;
Author: Armin Rigo
Branch:
Changeset: r168:c56076ff1eb2
Date: 2014-12-05 17:06 +0100
http://bitbucket.org/cffi/creflect/changeset/c56076ff1eb2/
Log:functions returning void
diff --git a/zeffir/cfunc.c b/zeffir/cfunc.c
--- a/zeffir/cfunc.c
+++ b/zeffir/cfunc.c
@@ -115,6 +115,7 @@
void *
Author: Armin Rigo
Branch:
Changeset: r169:fe2fdb378e56
Date: 2014-12-05 17:15 +0100
http://bitbucket.org/cffi/creflect/changeset/fe2fdb378e56/
Log:Demo files (direct ports from hg/cffi/demo)
diff --git a/demo/gmp.crx b/demo/gmp.crx
new file mode 100644
--- /dev/null
+++ b/demo/gmp.crx
@@ -
Author: Armin Rigo
Branch:
Changeset: r170:fa167c323433
Date: 2014-12-05 17:25 +0100
http://bitbucket.org/cffi/creflect/changeset/fa167c323433/
Log:add a Makefile
diff --git a/demo/Makefile b/demo/Makefile
new file mode 100644
--- /dev/null
+++ b/demo/Makefile
@@ -0,0 +1,16 @@
+ALL = zeffir
Author: Armin Rigo
Branch:
Changeset: r171:60242be937cb
Date: 2014-12-05 17:31 +0100
http://bitbucket.org/cffi/creflect/changeset/60242be937cb/
Log:fix
diff --git a/demo/Makefile b/demo/Makefile
--- a/demo/Makefile
+++ b/demo/Makefile
@@ -5,6 +5,9 @@
%-creflect.c: %.crx
PYTHONPATH=
Author: Ronan Lamy
Branch: framestate
Changeset: r74833:3fbf13809a73
Date: 2014-12-03 17:32 +
http://bitbucket.org/pypy/pypy/changeset/3fbf13809a73/
Log:begin implementing analyze_signals()
diff --git a/rpython/flowspace/bytecode.py b/rpython/flowspace/bytecode.py
--- a/rpython/flowspace
Author: Ronan Lamy
Branch: framestate
Changeset: r74837:1488ee7e209b
Date: 2014-12-05 15:23 +
http://bitbucket.org/pypy/pypy/changeset/1488ee7e209b/
Log:extract method ctx.has_exc_handler()
diff --git a/rpython/flowspace/flowcontext.py b/rpython/flowspace/flowcontext.py
--- a/rpython/flo
Author: Ronan Lamy
Branch: framestate
Changeset: r74838:7c14497ac340
Date: 2014-12-05 16:44 +
http://bitbucket.org/pypy/pypy/changeset/7c14497ac340/
Log:move handling of escaping FlowSignals to nomoreblocks()
diff --git a/rpython/flowspace/flowcontext.py b/rpython/flowspace/flowcontext.p
Author: Ronan Lamy
Branch: framestate
Changeset: r74832:3d32a761abce
Date: 2014-12-03 13:50 +
http://bitbucket.org/pypy/pypy/changeset/3d32a761abce/
Log:Add dummy analyze_signals pass to bc_reader.build_flow()
diff --git a/rpython/flowspace/bytecode.py b/rpython/flowspace/bytecode.py
---
Author: Ronan Lamy
Branch: framestate
Changeset: r74834:ac849f367719
Date: 2014-12-03 23:57 +
http://bitbucket.org/pypy/pypy/changeset/ac849f367719/
Log:move stuff around
diff --git a/rpython/flowspace/flowcontext.py b/rpython/flowspace/flowcontext.py
--- a/rpython/flowspace/flowcontext.
Author: Ronan Lamy
Branch: framestate
Changeset: r74836:1c2990ad5a58
Date: 2014-12-04 19:28 +
http://bitbucket.org/pypy/pypy/changeset/1c2990ad5a58/
Log:rm force keyword from ctx.guessexception()
diff --git a/rpython/flowspace/flowcontext.py b/rpython/flowspace/flowcontext.py
--- a/rpyth
Author: Ronan Lamy
Branch: framestate
Changeset: r74835:d3503f9756b8
Date: 2014-12-04 00:42 +
http://bitbucket.org/pypy/pypy/changeset/d3503f9756b8/
Log:kill pos_index
diff --git a/rpython/flowspace/bytecode.py b/rpython/flowspace/bytecode.py
--- a/rpython/flowspace/bytecode.py
+++ b/rpy
Author: Armin Rigo
Branch:
Changeset: r1586:dac8897a6503
Date: 2014-12-05 18:23 +0100
http://bitbucket.org/cffi/cffi/changeset/dac8897a6503/
Log:typo
diff --git a/c/_cffi_backend.c b/c/_cffi_backend.c
--- a/c/_cffi_backend.c
+++ b/c/_cffi_backend.c
@@ -4765,7 +4765,7 @@
CFieldObject *c
Author: Armin Rigo
Branch:
Changeset: r172:233ce8f1
Date: 2014-12-05 18:27 +0100
http://bitbucket.org/cffi/creflect/changeset/233ce8f1/
Log:ffi.offsetof
diff --git a/zeffir/ffi_obj.c b/zeffir/ffi_obj.c
--- a/zeffir/ffi_obj.c
+++ b/zeffir/ffi_obj.c
@@ -255,7 +255,7 @@
return (Py
Author: Armin Rigo
Branch:
Changeset: r174:a9718f1fb634
Date: 2014-12-05 18:49 +0100
http://bitbucket.org/cffi/creflect/changeset/a9718f1fb634/
Log:addressof(Lib, "some_global_var")
diff --git a/zeffir/cglob.c b/zeffir/cglob.c
--- a/zeffir/cglob.c
+++ b/zeffir/cglob.c
@@ -61,3 +61,8 @@
{
Author: Armin Rigo
Branch:
Changeset: r173:832fea94ecfa
Date: 2014-12-05 18:40 +0100
http://bitbucket.org/cffi/creflect/changeset/832fea94ecfa/
Log:ffi.addressof
diff --git a/zeffir/ffi_obj.c b/zeffir/ffi_obj.c
--- a/zeffir/ffi_obj.c
+++ b/zeffir/ffi_obj.c
@@ -317,6 +317,26 @@
return N
Author: Armin Rigo
Branch:
Changeset: r175:6fc30b084312
Date: 2014-12-05 19:09 +0100
http://bitbucket.org/cffi/creflect/changeset/6fc30b084312/
Log:more fixes to addressof()
diff --git a/zeffir/cfunc.c b/zeffir/cfunc.c
--- a/zeffir/cfunc.c
+++ b/zeffir/cfunc.c
@@ -11,6 +11,8 @@
} ZefFunc
Author: Armin Rigo
Branch:
Changeset: r176:620bef5903b4
Date: 2014-12-05 19:39 +0100
http://bitbucket.org/cffi/creflect/changeset/620bef5903b4/
Log:fix ffi.addressof(). Also allows ffi.new("struct_type") directly,
as an extension that seems to make sense for now
diff --git a/zeffir/
Author: Armin Rigo
Branch:
Changeset: r178:a3463cd2c8f0
Date: 2014-12-05 19:46 +0100
http://bitbucket.org/cffi/creflect/changeset/a3463cd2c8f0/
Log:uncomment these tests, now passing
diff --git a/zeffir/test/struct.crx b/zeffir/test/struct.crx
--- a/zeffir/test/struct.crx
+++ b/zeffir/test/
Author: Armin Rigo
Branch:
Changeset: r177:c652e11796b0
Date: 2014-12-05 19:45 +0100
http://bitbucket.org/cffi/creflect/changeset/c652e11796b0/
Log:test and fix for structs-with-incomplete-array
diff --git a/creflect/model.py b/creflect/model.py
--- a/creflect/model.py
+++ b/creflect/model.
Author: Armin Rigo
Branch:
Changeset: r179:8cf4c557d1f1
Date: 2014-12-05 20:49 +0100
http://bitbucket.org/cffi/creflect/changeset/8cf4c557d1f1/
Log:fix the error message
diff --git a/zeffir/ffi_obj.c b/zeffir/ffi_obj.c
--- a/zeffir/ffi_obj.c
+++ b/zeffir/ffi_obj.c
@@ -231,8 +231,8 @@
}
Author: Armin Rigo
Branch:
Changeset: r180:9eb2b89d1adc
Date: 2014-12-05 21:09 +0100
http://bitbucket.org/cffi/creflect/changeset/9eb2b89d1adc/
Log:copy the logic for ffi.cast()
diff --git a/zeffir/ffi_obj.c b/zeffir/ffi_obj.c
--- a/zeffir/ffi_obj.c
+++ b/zeffir/ffi_obj.c
@@ -255,6 +255,208
Author: Brian Kearns
Branch:
Changeset: r74839:642a5d4965d6
Date: 2014-12-05 15:12 -0500
http://bitbucket.org/pypy/pypy/changeset/642a5d4965d6/
Log:cleanup references to numpypy
diff too long, truncating to 2000 out of 3730 lines
diff --git a/pypy/module/micronumpy/boxes.py b/pypy/module/m
Author: Brian Kearns
Branch:
Changeset: r74840:0123a8ee6ab6
Date: 2014-12-05 15:16 -0500
http://bitbucket.org/pypy/pypy/changeset/0123a8ee6ab6/
Log:remove old test_lib_pypy tests of numpypy
diff --git a/pypy/module/test_lib_pypy/numpypy/__init__.py
b/pypy/module/test_lib_pypy/numpypy/__ini
Author: Armin Rigo
Branch:
Changeset: r181:f1168b43ad59
Date: 2014-12-05 21:34 +0100
http://bitbucket.org/cffi/creflect/changeset/f1168b43ad59/
Log:ffi.getctype()
diff --git a/zeffir/ffi_obj.c b/zeffir/ffi_obj.c
--- a/zeffir/ffi_obj.c
+++ b/zeffir/ffi_obj.c
@@ -643,10 +643,53 @@
}
}
Author: Armin Rigo
Branch:
Changeset: r182:7f8cb0c71de4
Date: 2014-12-05 21:42 +0100
http://bitbucket.org/cffi/creflect/changeset/7f8cb0c71de4/
Log:copy cdata_as_number from _cffi_backend
diff --git a/zeffir/cdata.c b/zeffir/cdata.c
--- a/zeffir/cdata.c
+++ b/zeffir/cdata.c
@@ -1050,6 +1050
Author: Armin Rigo
Branch:
Changeset: r183:0290e34a02b3
Date: 2014-12-05 21:45 +0100
http://bitbucket.org/cffi/creflect/changeset/0290e34a02b3/
Log:cdata iteration (copied from _cffi_backend)
diff --git a/zeffir/cdata.c b/zeffir/cdata.c
--- a/zeffir/cdata.c
+++ b/zeffir/cdata.c
@@ -1559,6 +
Author: Armin Rigo
Branch:
Changeset: r184:f6141dc25e53
Date: 2014-12-05 21:56 +0100
http://bitbucket.org/cffi/creflect/changeset/f6141dc25e53/
Log:ffi.new_handle(), ffi.from_handle()
diff --git a/zeffir/cdata.c b/zeffir/cdata.c
--- a/zeffir/cdata.c
+++ b/zeffir/cdata.c
@@ -1,10 +1,10 @@
Author: Amaury Forgeot d'Arc
Branch: more-rposix
Changeset: r74841:76feb483c6b4
Date: 2014-11-11 21:00 +0100
http://bitbucket.org/pypy/pypy/changeset/76feb483c6b4/
Log:Fix various tests
diff --git a/rpython/flowspace/test/test_objspace.py
b/rpython/flowspace/test/test_objspace.py
--- a/rpyt
Author: Amaury Forgeot d'Arc
Branch: more-rposix
Changeset: r74844:511d0dd384da
Date: 2014-12-05 22:06 +0100
http://bitbucket.org/pypy/pypy/changeset/511d0dd384da/
Log:hg merge default
diff too long, truncating to 2000 out of 20185 lines
diff --git a/lib-python/2.7/subprocess.py b/lib-pytho
Author: Amaury Forgeot d'Arc
Branch: more-rposix
Changeset: r74843:9af5b8184a71
Date: 2014-12-05 19:52 +0100
http://bitbucket.org/pypy/pypy/changeset/9af5b8184a71/
Log:Found a much better way to register a replacement function.
diff --git a/rpython/flowspace/operation.py b/rpython/flowspace/
Author: Amaury Forgeot d'Arc
Branch: more-rposix
Changeset: r74842:0edb78d84f6a
Date: 2014-11-11 21:16 +0100
http://bitbucket.org/pypy/pypy/changeset/0edb78d84f6a/
Log:Give a better name to the list of os.WEXITSTATUS macros
diff --git a/pypy/module/posix/__init__.py b/pypy/module/posix/__ini
Author: Amaury Forgeot d'Arc
Branch: more-rposix
Changeset: r74845:34acd72615a6
Date: 2014-12-05 22:15 +0100
http://bitbucket.org/pypy/pypy/changeset/34acd72615a6/
Log:Restore the previous version to fix the test
diff --git a/rpython/flowspace/test/test_objspace.py
b/rpython/flowspace/test/
Author: Armin Rigo
Branch:
Changeset: r185:771ed4577187
Date: 2014-12-05 22:37 +0100
http://bitbucket.org/cffi/creflect/changeset/771ed4577187/
Log:move some code around and translate gc_weakrefs.py into C.
diff --git a/zeffir/cdata.c b/zeffir/cdata.c
--- a/zeffir/cdata.c
+++ b/zeffir/cdata
Author: Armin Rigo
Branch:
Changeset: r186:8bcc78765083
Date: 2014-12-05 22:43 +0100
http://bitbucket.org/cffi/creflect/changeset/8bcc78765083/
Log:simplify
diff --git a/zeffir/cgc.c b/zeffir/cgc.c
--- a/zeffir/cgc.c
+++ b/zeffir/cgc.c
@@ -2,16 +2,12 @@
/* translated to C from cffi/gc_weak
Author: Romain Guillebert
Branch: extradoc
Changeset: r5478:dd38c1bea82c
Date: 2014-12-06 03:31 +0530
http://bitbucket.org/pypy/extradoc/changeset/dd38c1bea82c/
Log:Progress
diff --git a/talk/scipyindia2014/talk.rst b/talk/scipyindia2014/talk.rst
--- a/talk/scipyindia2014/talk.rst
+++ b/talk
Author: Romain Guillebert
Branch: extradoc
Changeset: r5479:9883ef8b82cc
Date: 2014-12-06 03:47 +0530
http://bitbucket.org/pypy/extradoc/changeset/9883ef8b82cc/
Log:Add image
diff --git a/talk/scipyindia2014/speed.png b/talk/scipyindia2014/speed.png
new file mode 100644
index
00
Author: Brian Kearns
Branch:
Changeset: r74849:794a98c020bf
Date: 2014-12-05 16:39 -0500
http://bitbucket.org/pypy/pypy/changeset/794a98c020bf/
Log:eliminate some ops in logical_xor
diff --git a/pypy/module/micronumpy/test/test_zjit.py
b/pypy/module/micronumpy/test/test_zjit.py
--- a/pypy/
Author: Brian Kearns
Branch:
Changeset: r74847:f28d82b7078c
Date: 2014-12-05 17:03 -0500
http://bitbucket.org/pypy/pypy/changeset/f28d82b7078c/
Log:avoid tracking an index in reduce_cumulative
diff --git a/pypy/module/micronumpy/loop.py b/pypy/module/micronumpy/loop.py
--- a/pypy/module/mic
Author: Brian Kearns
Branch:
Changeset: r74846:f907c020762a
Date: 2014-12-05 16:48 -0500
http://bitbucket.org/pypy/pypy/changeset/f907c020762a/
Log:add test_zjit for reduce_cumulative
diff --git a/pypy/module/micronumpy/compile.py
b/pypy/module/micronumpy/compile.py
--- a/pypy/module/micro
Author: Brian Kearns
Branch:
Changeset: r74848:dba4524de78e
Date: 2014-12-05 16:17 -0500
http://bitbucket.org/pypy/pypy/changeset/dba4524de78e/
Log:add test_zjit for logical_xor reduce
diff --git a/pypy/module/micronumpy/compile.py
b/pypy/module/micronumpy/compile.py
--- a/pypy/module/micr
Author: Romain Guillebert
Branch: extradoc
Changeset: r5480:61ba4f722878
Date: 2014-12-06 11:25 +0530
http://bitbucket.org/pypy/extradoc/changeset/61ba4f722878/
Log:Progress
diff --git a/talk/scipyindia2014/talk.rst b/talk/scipyindia2014/talk.rst
--- a/talk/scipyindia2014/talk.rst
+++ b/talk
61 matches
Mail list logo