Skip to content

Commit 62174b5

Browse files
committed
Add a global convenience package file
1 parent b905180 commit 62174b5

File tree

5 files changed

+124
-3
lines changed

5 files changed

+124
-3
lines changed
+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
`import std.experimental.scripting` as a global convenience import
2+
3+
$(MREF std,experimental,scripting) allows to conveniently use all Phobos modules
4+
with one import:
5+
6+
---
7+
import std.experimental.scripting;
8+
void main()
9+
{
10+
10.iota.map!log.sum.writeln;
11+
}
12+
---
13+
14+
For short scripts a lot of imports are often needed to get all the
15+
modules from the standard library.
16+
With this release it's possible to use `import std.experimental.scripting` for importing the entire
17+
standard library at once. This can be used for fast prototyping or REPLs:
18+
19+
---
20+
import std.experimental.scripting;
21+
void main()
22+
{
23+
6.iota
24+
.filter!(a => a % 2) // 0 2 4
25+
.map!(a => a * 2) // 0 4 8
26+
.tee!writeln
27+
.sum
28+
.reverseArgs!writefln("Sum: %d"); // 18
29+
}
30+
---
31+
32+
As before, symbol conflicts will only arise if a symbol with collisions is used.
33+
In this case, $(LINK2 $(ROOT)spec/module.html#static_imports, static imports) or
34+
$(LINK2 $(ROOT)spec/module.html#renamed_imports, renamed imports) can be used
35+
to uniquely select a specific symbol.
36+
37+
Importing entire Phobos costs less than half a second (varying on the system) and
38+
work is in progress to reduce this overhead even further.

posix.mak

+1-1
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ PACKAGE_std = array ascii base64 bigint bitmanip compiler complex concurrency \
195195
outbuffer parallelism path process random signals socket stdint \
196196
stdio string system traits typecons uni \
197197
uri utf uuid variant xml zip zlib
198-
PACKAGE_std_experimental = checkedint typecons
198+
PACKAGE_std_experimental = checkedint typecons scripting
199199
PACKAGE_std_algorithm = comparison iteration mutation package searching setops \
200200
sorting
201201
PACKAGE_std_container = array binaryheap dlist package rbtree slist util

std/experimental/scripting.d

+83
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
/++
2+
Phobos is the D standard library, built on top of druntime.
3+
4+
Convenience file that allows to import entire Phobos in one command.
5+
+/
6+
module std.experimental.scripting;
7+
8+
///
9+
@safe unittest
10+
{
11+
import std.experimental.scripting;
12+
13+
int len;
14+
auto r = 6.iota
15+
.filter!(a => a % 2) // 0 2 4
16+
.map!(a => a * 2) // 0 4 8
17+
.tee!(_ => len++)
18+
.sum
19+
.reverseArgs!format("Sum: %d");
20+
21+
assert(len == 3);
22+
assert(r == "Sum: 18");
23+
}
24+
25+
///
26+
@safe unittest
27+
{
28+
import std.experimental.scripting;
29+
assert(10.iota.map!(partial!(pow, 2)).sum == 1023);
30+
}
31+
32+
public import std.algorithm;
33+
public import std.array;
34+
public import std.ascii;
35+
public import std.base64;
36+
public import std.bigint;
37+
public import std.bitmanip;
38+
public import std.compiler;
39+
public import std.complex;
40+
public import std.concurrency;
41+
public import std.container;
42+
public import std.conv;
43+
public import std.csv;
44+
public import std.datetime;
45+
public import std.demangle;
46+
public import std.digest;
47+
public import std.encoding;
48+
public import std.exception;
49+
public import std.file;
50+
public import std.format;
51+
public import std.functional;
52+
public import std.getopt;
53+
public import std.json;
54+
public import std.math;
55+
public import std.mathspecial;
56+
public import std.meta;
57+
public import std.mmfile;
58+
public import std.net.curl;
59+
public import std.numeric;
60+
public import std.outbuffer;
61+
public import std.parallelism;
62+
public import std.path;
63+
public import std.process;
64+
public import std.random;
65+
public import std.range;
66+
public import std.regex;
67+
public import std.signals;
68+
public import std.socket;
69+
public import std.stdint;
70+
public import std.stdio;
71+
public import std.string;
72+
public import std.system;
73+
public import std.traits;
74+
public import std.typecons;
75+
//public import std.typetuple; // this module is undocumented and about to be deprecated
76+
public import std.uni;
77+
public import std.uri;
78+
public import std.utf;
79+
public import std.uuid;
80+
public import std.variant;
81+
public import std.xml;
82+
public import std.zip;
83+
public import std.zlib;

win32.mak

+1-1
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,7 @@ SRC_STD_INTERNAL_WINDOWS= \
284284
std\internal\windows\advapi32.d
285285

286286
SRC_STD_EXP= \
287-
std\experimental\checkedint.d std\experimental\typecons.d
287+
std\experimental\checkedint.d std\experimental\typecons.d std\experimental\scripting.d
288288

289289
SRC_STD_EXP_ALLOC_BB= \
290290
std\experimental\allocator\building_blocks\affix_allocator.d \

win64.mak

+1-1
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,7 @@ SRC_STD_INTERNAL_WINDOWS= \
309309
std\internal\windows\advapi32.d
310310

311311
SRC_STD_EXP= \
312-
std\experimental\checkedint.d std\experimental\typecons.d
312+
std\experimental\checkedint.d std\experimental\typecons.d std\experimental\scripting.d
313313

314314
SRC_STD_EXP_ALLOC_BB= \
315315
std\experimental\allocator\building_blocks\affix_allocator.d \

0 commit comments

Comments
 (0)