@@ -202,6 +202,11 @@ flag limit-build-mem
202202 manual: True
203203 default: False
204204
205+flag streamly-core
206+ description: Build only the core modules
207+ manual: True
208+ default: False
209+
205210-------------------------------------------------------------------------------
206211-- Common stanzas
207212-------------------------------------------------------------------------------
@@ -330,84 +335,45 @@ library
330335
331336 if os(windows)
332337 c-sources: src/Streamly/Internal/Data/Time/Clock/Windows.c
333− exposed-modules: Streamly.Internal.FileSystem.Event.Windows
334− build-depends: Win32 >= 2.6 && < 2.13
335338
336339 if os(darwin)
337− frameworks: Cocoa
338340 include-dirs: src/Streamly/Internal
339341 c-sources: src/Streamly/Internal/Data/Time/Clock/Darwin.c
340− , src/Streamly/Internal/FileSystem/Event/Darwin.m
341− exposed-modules:
342− Streamly.Internal.FileSystem.Event.Darwin
343−
344− if os(linux)
345− exposed-modules: Streamly.Internal.FileSystem.Event.Linux
346−
347− if os(linux) || os(darwin) || os(windows)
348− exposed-modules: Streamly.Internal.FileSystem.Event
349342
350343 hs-source-dirs: src
351− other-modules:
352− Streamly.Data.Array
353− , Streamly.Data.Prim.Array
354− , Streamly.Data.SmallArray
355−
356344 exposed-modules:
357− Streamly.Prelude
358− , Streamly.Data.Unfold
359− , Streamly.Data.Fold
360− , Streamly.Data.Fold.Tee
361− , Streamly.Data.Array.Foreign
362−
363− -- Text Processing
364− , Streamly.Unicode.Stream
365−
366− -- Filesystem/IO
367− , Streamly.FileSystem.Handle
368− , Streamly.Console.Stdio
369−
370− -- Network/IO
371− , Streamly.Network.Socket
372− , Streamly.Network.Inet.TCP
373−
374− -- Deprecated
375− , Streamly
376− , Streamly.Data.Unicode.Stream
377− , Streamly.Memory.Array
378−
379− -- Internal modules, listed roughly in dependency order
380− -- To view dependency graph:
345+ -- Internal modules, listed roughly in bottom up
346+ -- dependency order To view dependency graph:
381347 -- graphmod | dot -Tps > deps.ps
382348
383349 -- streamly-base
384− , Streamly.Internal.BaseCompat
350+ Streamly.Internal.BaseCompat
385351 , Streamly.Internal.Control.Exception
386352 , Streamly.Internal.Control.Monad
387353 , Streamly.Internal.Control.ForkIO
388− , Streamly.Internal.Control.ForkLifted
389− , Streamly.Internal.Control.Concurrent
390354 , Streamly.Internal.Data.Cont
355+ , Streamly.Internal.Foreign.Malloc
356+ , Streamly.Internal.System.IO
357+
358+ -- streamly-strict-data
391359 , Streamly.Internal.Data.Tuple.Strict
392360 , Streamly.Internal.Data.Maybe.Strict
393361 , Streamly.Internal.Data.Either.Strict
394− , Streamly.Internal.Foreign.Malloc
395− , Streamly.Internal.Data.Atomics
362+
363+ -- XXX Depends on monad-control
364+ , Streamly.Internal.Control.Concurrent
365+ , Streamly.Internal.Control.ForkLifted
396366 , Streamly.Internal.Data.IOFinalizer
367+
368+ -- streamly-time
397369 , Streamly.Internal.Data.Time
398370 , Streamly.Internal.Data.Time.TimeSpec
399371 , Streamly.Internal.Data.Time.Units
400372 , Streamly.Internal.Data.Time.Clock.Type
401373 , Streamly.Internal.Data.Time.Clock
402− , Streamly.Internal.System.IO
403− , Streamly.Internal.System.IOVec.Type
404374
405− -- streamly-core-stream
375+ -- streamly-core-stream-types
406376 , Streamly.Internal.Data.SVar.Type
407− , Streamly.Internal.Data.SVar.Worker
408− , Streamly.Internal.Data.SVar.Dispatch
409− , Streamly.Internal.Data.SVar.Pull
410− , Streamly.Internal.Data.SVar
411377 , Streamly.Internal.Data.Stream.StreamK.Type
412378 , Streamly.Internal.Data.Fold.Step
413379 , Streamly.Internal.Data.Refold.Type
@@ -424,23 +390,18 @@ library
424390 , Streamly.Internal.Data.Parser.ParserD.Type
425391 , Streamly.Internal.Data.Pipe.Type
426392
393+ -- streamly-core-array-types
427394 -- Unboxed IORef
395+ -- XXX Depends on primitive
428396 , Streamly.Internal.Data.IORef.Prim
429−
430− -- streamly-core-array
431397 -- May depend on streamly-core-stream
432398 , Streamly.Internal.Data.Array.Foreign.Mut.Type
433399 , Streamly.Internal.Data.Array.Foreign.Mut
434400 , Streamly.Internal.Data.Array.Foreign.Type
435− , Streamly.Internal.Data.Array.Prim.Mut.Type
436− , Streamly.Internal.Data.Array.Prim.Type
437− , Streamly.Internal.Data.Array.Prim.Pinned.Mut.Type
438− , Streamly.Internal.Data.Array.Prim.Pinned.Type
439401 , Streamly.Internal.Data.Array.Mut.Type
440− , Streamly.Internal.Data.SmallArray.Type
441402
442− -- streamly-base-streams
443− -- StreamD depends on streamly-core-array
403+ -- streamly-core-streams
404+ -- StreamD depends on streamly-array-types
444405 , Streamly.Internal.Data.Stream.StreamD.Generate
445406 , Streamly.Internal.Data.Stream.StreamD.Eliminate
446407 , Streamly.Internal.Data.Stream.StreamD.Nesting
@@ -454,27 +415,70 @@ library
454415 , Streamly.Internal.Data.Parser.ParserD.Tee
455416 , Streamly.Internal.Data.Parser.ParserD
456417
457− -- streamly-core
418+ -- streamly-core-data
458419 , Streamly.Internal.Data.Unfold
459− , Streamly.Internal.Data.Unfold.SVar
460420 , Streamly.Internal.Data.Unfold.Enumeration
461421 , Streamly.Internal.Data.Fold.Tee
462422 , Streamly.Internal.Data.Fold
463− , Streamly.Internal.Data.Fold.SVar
464− , Streamly.Internal.Data.Fold.Async
465423 , Streamly.Internal.Data.Sink
466424 , Streamly.Internal.Data.Parser
467425 , Streamly.Internal.Data.Pipe
426+ , Streamly.Internal.Data.Stream.Serial
427+ , Streamly.Internal.Data.Stream.Zip
428+ , Streamly.Internal.Data.List
429+
430+ -- streamly-core-data-arrays
431+ -- XXX Depends on primitive
432+ , Streamly.Internal.Data.Array
433+ , Streamly.Internal.Data.Array.Foreign
434+ , Streamly.Internal.Data.Array.Stream.Mut.Foreign
435+ , Streamly.Internal.Data.Array.Stream.Fold.Foreign
436+
437+ -- Ring Arrays
438+ , Streamly.Internal.Data.Ring.Foreign
439+ -- XXX Depends on primitive
440+ , Streamly.Internal.Data.Ring
441+
442+ -- Only used for benchmarks
443+ , Streamly.Internal.Data.Stream.StreamK
444+
445+ -- streamly-core exposed modules
446+ , Streamly.Data.Fold
447+ , Streamly.Data.Fold.Tee
448+ , Streamly.Data.Array.Foreign
449+
450+ if !flag(streamly-core)
451+ exposed-modules:
452+ -- XXX To be moved to streamly-core
453+ Streamly.Data.Unfold
454+
455+ -- XXX To be removed or put under dev flag
456+ , Streamly.Internal.Data.Array.Prim.Mut.Type
457+ , Streamly.Internal.Data.Array.Prim.Type
458+ , Streamly.Internal.Data.Array.Prim.Pinned.Mut.Type
459+ , Streamly.Internal.Data.Array.Prim.Pinned.Type
460+ , Streamly.Internal.Data.SmallArray.Type
461+ , Streamly.Internal.Data.Array.Prim
462+ , Streamly.Internal.Data.Array.Prim.Pinned
463+ , Streamly.Internal.Data.SmallArray
464+
465+ -- streamly-concurrent
466+ , Streamly.Internal.Data.Atomics
467+ , Streamly.Internal.Data.SVar.Worker
468+ , Streamly.Internal.Data.SVar.Dispatch
469+ , Streamly.Internal.Data.SVar.Pull
470+ , Streamly.Internal.Data.SVar
468471
472+ , Streamly.Internal.Data.Unfold.SVar
473+ , Streamly.Internal.Data.Fold.SVar
474+ , Streamly.Internal.Data.Fold.Async
469475 , Streamly.Internal.Data.Stream.SVar.Generate
470476 , Streamly.Internal.Data.Stream.SVar.Eliminate
471− , Streamly.Internal.Data.Stream.Serial
477+
472478 , Streamly.Internal.Data.Stream.Async
473479 , Streamly.Internal.Data.Stream.Parallel
474480 , Streamly.Internal.Data.Stream.Ahead
475− , Streamly.Internal.Data.Stream.Zip
476481 , Streamly.Internal.Data.Stream.ZipAsync
477− , Streamly.Internal.Data.List
478482
479483 , Streamly.Internal.Data.Stream.IsStream.Type
480484 , Streamly.Internal.Data.Stream.IsStream.Combinators
@@ -490,23 +494,10 @@ library
490494 , Streamly.Internal.Data.Stream.IsStream.Top
491495 , Streamly.Internal.Data.Stream.IsStream
492496
493− -- streamly-arrays
494− -- May depend on streamly-core
495− , Streamly.Internal.Data.Array
496− , Streamly.Internal.Data.Array.Foreign
497− , Streamly.Internal.Data.Array.Prim
498− , Streamly.Internal.Data.Array.Prim.Pinned
499− , Streamly.Internal.Data.SmallArray
500− , Streamly.Internal.Data.Array.Stream.Mut.Foreign
501497 , Streamly.Internal.Data.Array.Stream.Foreign
502− , Streamly.Internal.Data.Array.Stream.Fold.Foreign
503−
504− -- Memory storage
505− , Streamly.Internal.Data.Ring.Foreign
506− , Streamly.Internal.Data.Ring
507498
508− -- IOVec (depends on arrays/streams)
509− , Streamly.Internal.System.IOVec
499+ -- streamly-serde
500+ , Streamly.Internal.Data.Binary.Decode
510501
511502 -- streamly-unicode
512503 , Streamly.Internal.Unicode.Stream
@@ -516,10 +507,9 @@ library
516507 , Streamly.Internal.Unicode.Array.Char
517508 , Streamly.Internal.Unicode.Array.Prim.Pinned
518509
519− -- streamly-serde
520− , Streamly.Internal.Data.Binary.Decode
521−
522510 -- streamly-filesystem
511+ , Streamly.Internal.System.IOVec.Type
512+ , Streamly.Internal.System.IOVec
523513 , Streamly.Internal.FileSystem.Handle
524514 , Streamly.Internal.FileSystem.Dir
525515 , Streamly.Internal.FileSystem.File
@@ -533,8 +523,42 @@ library
533523 , Streamly.Internal.Network.Socket
534524 , Streamly.Internal.Network.Inet.TCP
535525
536− -- Only used for benchmarks
537− , Streamly.Internal.Data.Stream.StreamK
526+ -- Exposed modules
527+ , Streamly.Prelude
528+
529+ -- Text Processing
530+ , Streamly.Unicode.Stream
531+
532+ -- Filesystem/IO
533+ , Streamly.FileSystem.Handle
534+ , Streamly.Console.Stdio
535+
536+ -- Network/IO
537+ , Streamly.Network.Socket
538+ , Streamly.Network.Inet.TCP
539+
540+ -- Deprecated
541+ , Streamly
542+ , Streamly.Data.Unicode.Stream
543+ , Streamly.Memory.Array
544+
545+ other-modules:
546+ Streamly.Data.Array
547+ , Streamly.Data.Prim.Array
548+ , Streamly.Data.SmallArray
549+
550+ if os(windows)
551+ exposed-modules: Streamly.Internal.FileSystem.Event.Windows
552+
553+ if os(darwin)
554+ c-sources: src/Streamly/Internal/FileSystem/Event/Darwin.m
555+ exposed-modules: Streamly.Internal.FileSystem.Event.Darwin
556+
557+ if os(linux)
558+ exposed-modules: Streamly.Internal.FileSystem.Event.Linux
559+
560+ if os(linux) || os(darwin) || os(windows)
561+ exposed-modules: Streamly.Internal.FileSystem.Event
538562
539563 build-depends:
540564 -- Core libraries shipped with ghc, the min and max
@@ -550,26 +574,33 @@ library
550574 , exceptions >= 0.8 && < 0.11
551575 , ghc-prim >= 0.2 && < 0.9
552576 , mtl >= 2.2 && < 2.3
553− , primitive >= 0.5.4 && < 0.8
554577 , transformers >= 0.4 && < 0.7
578+ , filepath >= 1.2.0.0 && < 1.5
555579
580+ , fusion-plugin-types >= 0.1 && < 0.2
581+ , monad-control >= 1.0 && < 1.1
582+
583+ -- XXX to be removed
584+ , transformers-base >= 0.4 && < 0.5
585+ , primitive >= 0.5.4 && < 0.8
556586 , heaps >= 0.3 && < 0.5
557− , filepath >= 1.2.0.0 && < 1.5
558587
588+ if !flag(streamly-core)
589+ build-depends:
559590 -- concurrency
560591 , atomic-primops >= 0.8 && < 0.9
561592 , lockfree-queue >= 0.2.3 && < 0.3
562593
563− -- transfomers
564− , monad-control >= 1.0 && < 1.1
565− , transformers-base >= 0.4 && < 0.5
566−
567− , fusion-plugin-types >= 0.1 && < 0.2
568594 , unicode-data >= 0.1 && < 0.4
569595
570596 -- Network
571597 , network >= 2.6 && < 3.2
572598
599+ if os(windows)
600+ build-depends: Win32 >= 2.6 && < 2.13
601+
602+ if os(darwin)
603+ frameworks: Cocoa
573604
574605 if flag(inspection)
575606 build-depends: template-haskell >= 2.14 && < 2.17