/
TODO
522 lines (406 loc) · 15.2 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
What follows is that task list and description of
the work planned for the future PDL-2.x releases.
The main goal we are working towards is to have a
baseline PDL working on *all* PDL OS platforms:
win32/cygwin, macosx, and linux/unix/bsd systems with
support for 2-D graphics (via PLplot) and 3-D graphics
(via OpenGL/TriD).
+-------------------------------------------------------+
| Candidate Tasks for PDL-2.x Development |
+-------------------------------------------------------+
This section documents the top level tasks from
the more detailed list below. The first column
of the line indicates the priority of that item
(and those below it) for the PDL-2.x release:
T -- TBD
R -- required for release to occur
N -- nice to have but not mandatory
no mark means same as super bullet or FYI
D -- done
Each item has some task description based on the
current status.
Update task list after PDL-2.x release.
+-------------------------------------------------------+
| |
| PDL-2.x BULLET TASK LISTING |
| ( BY CATEGORY ) |
| |
+-------------------------------------------------------+
+-------------------------------------------------------+
| TESTING |
+-------------------------------------------------------+
Refactor to use Test::More
* imagergb.t
* interp.t
* interp_slatec.t
* interpol.t
* limits_normalize_dsets.t
* linfit.t
* magic.t
* matmult.t
* ones.t
* pdlchar.t
* physical.t
* picnorgb.t
* picrgb.t
* pnm.t
* poly.t
* polyroots.t
* pthread.t
* pthread_auto.t
* reduce.t
* refs.t
* scope.t
* segfault.t
* thread.t
* thread_def.t
* vaffine.t
Convert from Test to Test::More
* bess.t
* callext.t
* conv.t
* diskcache.t
* erf.t
* erfi.t
* fft.t
* func.t
* hist.t
* image2d.t
* lut.t
* lvalue.t
* matrix.t
* matrixops.t
* niceslice.t
* nsdatahandle.t
* requiredmods.t
* round.t
* simplex.t
* transform.t
* trig.t
* xvals.t
Need to test PDL build from scratch both WITH_BADVAL and without
* Find a way to automate this process for release testing
* Unix/Linux/BSD
* Windows
- cygwin
- activestate perl
- strawberry perl
* Mac OS X
Verify dependency detection across all major PDL platforms
* Unix/Linux/BSD, Windows(ASPerl/Strawberry)/Cygwin, Mac OS X
* Check completely clean build each platform
* Confirm that dependencies for each platform
are correctly detected and reported.
* Add any issues to Known_problems
These modules aren't tested by CPAN Testers because of dependencies:
* PDL::FFTW
- Deprecate PDL::FFTW since it is largely out-of-date and
has unresolved bugs with wisdom
- Alien::FFTW3 and add PDL::FFTW3
* PDL::Slatec
* PDL::Minuit
- need Fortran compilter and ExtUtils::F77
* PDL::IO::GD
- needs libgd
- Alien::GD
* PDL::IO::HDF
- based on HDF4
- Alien::HDF
- Alien::HDF5
- add binding to libhdf5
* PDL::GSL::XXX
- need more complete libgsl bindings
- Alien::GSL
* PDL::GIS::Proj
* PDL::Transform::Proj4
- Alien::Proj4
* PDL::Graphics::TriD
- Alien::OpenGL, GLU, GLEW, GLUT, GLUI...
- test with pixel buffer context(?)
* PDL::Graphics::PGPLOT
- needs portable driver (OpenGL)
- Alien::PGPLOT
- apply/update RGB color patches to current
* PDL::Graphics::PLplot
- need portable driver (OpenGL)
- Alien::PLplot
- need low-level PLplot interface
* PDL::IO::Browser
- need curses/ncurses
- Alien::Curses
- maybe OpenGL terminal or widget
- need something lightweight
- add support for pdls having >2 dims
Add support for Known_problems to tests
* Use skip for tests with segfault fails
* All bug reports should have a test in PDL/t
Clean up and triage for tickets prior to release.
* Bugs
* Feature requests
* Patches
+-------------------------------------------------------+
| DEPENDENCIES |
+-------------------------------------------------------+
Alien modules for the external PDL dependencies
* Alien::PLplot
* Alien::PROJ4
Define standard paths for external dependency libraries for PDL
* See File::ShareDir::Install and File::ShareDir
* Can skip install if system-wide is available
* Relocatable with package-config or Alien info
* Document any PDL-specific install locations
* This should allow for a devel-PDL install for win32
List and obtain module owners and developers for existing PDL modules
* Revisit each module's status by platform
* Regarding portability
* Review external dependency handling
* Update plan for development
Fix/document FORTRAN code requirements
* Add a USE_FORTRAN option to perldl.conf
* Add check for ExtUtils:F77
* Convert PDL::Slatec to use C with f2c of source
* Convert PDL::Minuit to use C with f2c of source
Fix IO/Browser build to properly check for the curses
library and build if available.
+-------------------------------------------------------+
| DOCUMENTATION |
+-------------------------------------------------------+
Update PDL web site pages
Review current documentation (underway)
* Verify correctness and consistency with PDL-2.x
* Update documentation where needed.
* Add web searchable versions of the docs.
* Maybe a wiki format could be used to improve docs
Add/update platform install notes to PDL wiki
* Complete build-from-scratch installs
* Soup to nuts via the cpan shell
* Build issues and their fixes
* How to get needed dependencies
* Other platform details
* Mac OS X
* Linux (by distribution and version)
* BSD
* Solaris
* Windows
* Cygwin
* Other
Add CPAN shell start-up info to PDL wiki or web page
* CPANminus/perlbrew seems to be best approach
- Basic CPAN more complicated
Add CPAN Testers start up info to PDL wiki
* Test::Reporter
* CPAN Testers version 2
* Easy/basic install and usage
The new CPAN Testers version 2.0 has been
released. It uses a web-based interface to
send reports rather than email. As a result
is is much easier to configure than the old
interface. As such, we would get better PDL
feedback if we have a quick-start for that.
Add info for PERL_CPAN_REPORTER_DIR variable.
Document how to set up a local sandbox for PDL build
* INSTALL_BASE for EU::MM > 6.31 and --install_base for M:B
* Need to cover adding bin to paths and any library issues
* Build with CPAN shell or cpanm
* Check out brewperl
A number of PDL users are configuring their
own local library, perl, and PDL installations.
It would be nice if clear directions were
written down so everyone doesn't have to
reinvent the same wheel.
Add docs/support for users of other software
* IDL, Matlab, NumPy
* Add help for equivalent PDL constructs
Update PDL Book (in progress)
* Needs updating to match PDL-2.x
* make a web version available on-line if possible
Better document the PDL help system
* Requirements and usage
* Quick start
* Add custom/user key word search support
* Is there a way to fetch all the functions/keywords
the PDL help system supports?
+-------------------------------------------------------+
| USABILITY |
+-------------------------------------------------------+
Improve PDL usability for first time users
* Work out-of-the-box via cpan[m] shell
* Fully automatic
* Semi-manual
* Easy install via 1-click or package managers
* PAR for distribution
* Should be able to upgrade PDL ppd install on win32
A simple cpan or platform package install should
work out of the box. Maybe not all dependencies
will build but PDL should build with 2D and 3D
graphics support for most/all platforms.
Implement "1-click" installs by platform and document in wiki
* Mac OS X: SciKarl, verify support by OS versions
* Windows: Strawberry Perl Professional, ActivePerl
* Unix OSes: Various package managers
Replace inconsistent minimum and maximum subs in Ufunc
by maxover and minover which is consistent with all the
other usages:
average -> avgover
daverage -> davgover
maximum -> maxover
maximum_ind -> maxover_ind
maximum_n_ind -> maxover_n_ind
minimum -> minover
minimum_ind -> minover_ind
minimum_n_ind -> minover_n_ind
minmaximum -> minmaxover
+-------------------------------------------------------+
| INSTALLATION |
+-------------------------------------------------------+
Switch from ExtUtils::MakeMaker to Module::Build
* May be better to go with Module::Install
* More flexible
* More familiar
* Builds faster
* Removes portability problems from shell and make
* Easier to extend
Fix the test problems with preexisting PDL installs
* Add warning if binary api has changed or if there
are other dependent PDL modules that would need
to be updated.
* Develop test methodology
* Add PDL::Core::Dev utility to perform check
* Automate detection/test skip if not built logic
Check/set perldl.conf options before the build
* Add WITH_CORE_ONLY to perldl.conf
* Add WITH_FORTRAN to perldl.conf
* Interactive option view prompt() in Makefile.PL
* GUI version
+-------------------------------------------------------+
| NEW FEATURES |
+-------------------------------------------------------+
Finish PDL::IO::ENVI module
* Implement basic writeenvi() routine
* Add tests and reimplement as a module
* Add to PDL distribution
Need PLplot and PDL::Graphics::PLplot to build all platforms
* MS Windows
* Cygwin
* Linux/unix
* Mac OS X
Complete Perldl2 shell:
* Implement remaining perldl features for pdl2
* Fix Ctrl-C handling for win32 systems
* Update documentation
* See Perldl2/TODO for the pdl2-specific list.
Add support for 64bit data:
* Add safe pdl allocation option to prevent OOM death
D Update allocation and types to support 64bit data
* Add info in PDL::Config for level of 64bit support
(e.g. STRLEN size vs ptrsize...)
Add support for improved 2-D image display using OpenGL
* Add threaded 2-D image tiled display to imag2d
* Enable REPL and GUI simultaneous operations and event loops
* perldl via ReadLine and FreeGLUT
* REPL via ReadLine and FreeGLUT
* Maybe for wxWidgets for Padre support
* Implement some tests
New pdl() constructor with matlab [] syntax for string arguments
* Needs more testing and verification
* Does it work for MATLAB and PDL users' purposes?
* Handle complex numbers (with i,j for sqrt(-1))
* Handle cut and paste of printed piddles
* Better error checking for invalid values
Ideally we should be able to cut-n-paste the print
output of a piddle into the constructor as a
string and get the piddle back (within float eps).
Finish spheres3d implementation
* Add color (RGB+A) support
* Add per-sphere radius (support threading)
* Add surface normals for smooth shading
* Extend to arbitrary objects with constructors
Refactor TriD/PDL for better animation
* interoperate better with OpenGL display
* clean up OO structure and document (use Moo[se])
* implement pipeline stream to wmpeg
* stream PDL slice (with no make-physical)
* add dataflow callback to support display updates
NiceSlice cleanup
* refactor to use Module::Compile / Filter::Simple
* implement string processing version for REPL use
- .pmc generation via Module::Compile
- Smarter parsing via Filter::Simple
- Optimize sourcecode filter for speed
* document nslice
* implement a niceslice method
* enhance nslice() to handle CODE refs
* Done but it doesn't buy much since it only
works if the CODE ref is a blessed object
so that a UNIVERSAL::nslice method can be
called on it.
* maybe defer/lazy source filtering
* check if valid subref args good for slicing
* can use string eval with notrans
+-------------------------------------------------------+
| LATER |
+-------------------------------------------------------+
PDL::Constants
* Transition into 'use PDL;'
* Add other constants of interest
* Units
D Complex i,j
* Inf
* To import or not to import
PDL::Matlab helper module
* Implement key set of basic Matlab functions
* MATLAB "expand" to PDL syntax?
* Document PDL equivalents
* Add who/whos refs or links to pdl2 'help vars'
Fix external dependency processing
* Implement Alien::Base::CheckLib
- provides detection part of Alien manifesto
- based on Devel::CheckLib to detect headers and libraries
- need to be fully cross-platform
* Remove dependencies on external commands (e.g. clear in Demos)
* Make missing functionality detectable at run time
* Could use warning/error stubs if functionality not available
* Alien modules for the external PDL dependencies
* Alien::Curses
* Alien::FFTW
* Alien::FFTW3
* Alien::GSL
* Alien::GD
* Alien::GLUI
* Alien::HDF
* Alien::HDF5
* Alien::JPEG
* Alien::NetPBM
* Alien::OpenGL, Alien::GLUT, Alien::GLX, Alien::GLEW
* Alien::PGPLOT
* Alien::PNG
* Alien::TIFF
Full GSL bindings for PDL
* Alien::GSL to install and something else to check
* Prioritize GSL functionality to add
* Convert GSL documentation to PDL usable form
* Automate code conversion
* Can we use Math::GSL as a starting point?
* What about an PDL::PP version using GSL configure info for thread support?
* Slatec compatibility wrappers
Clean and unify the FFT and FFTW in PDL
* FFT is the default implementation
* Add FFTW acceleration for the default FFT
* Add cleaner use of complex values to FFT routines
* Make non-inplace versions of FFT
* Make default FFT library match FFTW calling conventions
* Document FFT/FFTW
* The computational algorithms
* The input/output locations
Update HDF docs
* HDF5 and HDF4 are entirely different beasts (and totally incompatible)
* The PDL::IO::HDF library uses HDF4.
* Portability issues especially re. Installs
+------------------------------------------------------------+
| CORE CLEANUP TASKS (for v3) |
+------------------------------------------------------------+
- Search-and-destroy UNIVERSAL::ISA in favor of Safe::Isa
- Remove all clang warnings from PP code
- Dike out unwanted PP features
- Hose out unused cruft from the core modules (e.g. commented-out code)
- Hooks for multithreading?